Matthew Westcott
2006-Nov-24 01:25 UTC
Incorporating runtime parameters in a has_many :conditions clause
Hi, I was wondering if there was any way to include runtime parameters in the :conditions clause of a has_many relationship? I''m trying to model the concept of a person who goes by various nicknames. My Person model contains a "name" attribute containing their real name, and a "has_many :nicknames" relationship. Through my business rules, I''m enforcing the requirement that a person''s real name is always included in the database as a nickname. (If this seems like a really bad data structure, I''m open to suggestions. However, having weighed up various alternatives, this seems to me to be the least worst solution.) I now want to add an "alternative_nicknames" relationship, which will comprise all of the person''s nicknames *excluding* their real name. I''ve tried has_many :alternative_nicknames, :class_name => "Nickname", :conditions => ["nickname <> ?", self.name] - however, since has_many is a class-level method, the :conditions block is evaluated at the point of loading the class, and therefore self.name returns "Person" rather than the person''s name. Out of desperation I''ve even tried wrapping the has_many declaration in an after_initialize callback, but then it complains that has_many is not defined. The examples in the Rails docs and the Pragmatic book only demonstrate static SQL fragments being used in the :conditions clause, not ones incorporating parameters. Any ideas how I can achieve this? (If it helps explain things any better, I believe this person''s (unanswered) question is equivalent to mine: http://groups.google.com/group/rubyonrails-talk/msg/5006b300e4e5a8cc ) - Matt --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---