I'm working on a two-to-many relationship that works fine from the child object's perspective but not from the parent's. The imperfect, yet functional code looks like this:
dschruth wrote:
I'm working on a two-to-many relationship that works fine from the child object's perspective but not from the parent's. The imperfect, yet functional code looks like this: ------------------------------------------------------------------- class PrimaryTable < ActiveRecord::Base has_many :secondary_tables_1 , :foreign_key => :A_primary_table_id, :class_name => "SecondaryTable" has_many :secondary_tables_2 , :foreign_key => :B_primary_table_id, :class_name => "SecondaryTable" end
class SecondaryTable < ActiveRecord::Base belongs_to :A_primary_table, :foreign_key => :A_primary_table_id, :class_name => "PrimaryTable" belongs_to :B_primary_table, :foreign_key=> :B_primary_table_id, :class_name => "PrimaryTable" end ------------------------------------------------------------------------------------------
But, I don't want to have two linking fields up *and* two linking fields down. I only want one linking field down. I would like to lump these parent to child relationships into one associated link... doing something like this:
------------------------------------------------------------------------------------------
class PrimaryTable < ActiveRecord::Base has_many :secondary_tables , :foreign_key => :A_primary_table_id, :foreign_key => :B_primary_table_id, :class_name => "SecondaryTable" end
-------------------------------------------------
...but only one of the two links (the ones to "B_primary_table") shows up this way.
Using the :finder_sql option to has_many, you'll have to write custom SQL that does an "or" on the two foreign keys.