Hi All,
I’ve got a situation where I want a has_many :through association to behave somewhat like a normal has_many when << is called on the association. ie I would like it to return false instead of throwing an exception.
With some inspiration from http://blog.hasmanythrough.com I’ve come up with,
class Container < AR:B
has_many :container_items has_many :items, :through => :container_items do
def <<( item )
begin
self.concat item
rescue ActiveRecord::RecordInvalid => e
@owner.errors.add( :item, e)
false
end
end
end
Is there anything that stands out as a stark issue with doing this? I would like to call owner in some other way but I have not found how to get at @owner with a method.
The join model has only timestamps in addition to the two f’keys
Any comments, insights, crits etc are welcome.
I’ve extracted this into a plugin if anyone would like to try it. I can’t make any guarantees though. http://svn.devjavu.com/liquid/has_many_through_append_fix
Cheers Daniel