I have two models, A and B, related to one another by a many to many association and I want to validate an object of model B as it's being added to the association based on both its own attributes and attributes of the particular object of model A that it's being associated with.
I've realized that I can't do this if the association is represented by a habtm relationship since (as far as I can tell - please tell me if I'm wrong) there's no way to refer to the A object in my validation method for B.
Has many :through looks like a better approach here, since I can define the validation method on the join model itself. However this raises a question. I can't create a has many :through association unless the objects on both ends of the association are already saved (right?). But I don't want B to be saved if the association is going to be invalid.
Does this imply that the only way to handle this is to use a transaction to wrap the saving of B and the creation of the association? Or is there a smarter way to do this?