在Couple
聲明應該是這樣的關係:
class Couple
named_scope :with_people, { :include => [:first_person, :second_person] }
belongs_to :first_person, :class_name => 'Person'
belongs_to :second_person, :class_name => 'Person'
end
#usage:
Couple.with_people.first
# => <Couple ... @first_person: <Person ...>, @second_person: <Person ...>>
那些在Person
取決於Person
是否可以超過一個Couple
的一部分。如果Person
只能屬於一個Couple
,並不能成爲「第一」 Person
一個和另一個Second
,你可能想:
class Person
has_one :couple_as_first_person, :foreign_key => 'first_person_id', :class_name => 'Couple'
has_one :couple_as_second_person, :foreign_key => 'second_person_id', :class_name => 'Couple'
def couple
couple_as_first_person || couple_as_second_person
end
end
如果Person
可以屬於多個Couple
秒,有沒有辦法知道他們是否是「第一」或「第二」,在任何給定的Couple
,你可能想:
class Person
has_many :couples_as_first_person, :foreign_key => 'first_person_id', :class_name => 'Couple'
has_many :couples_as_second_person, :foreign_key => 'second_person_id', :class_name => 'Couple'
def couples
couples_as_first_person + couples_as_second_person
end
end
如果你使用Rails,在Person模型的主鍵,爲什麼會是「爲person_id 「而不僅僅是」身份證「? – tfwright 2010-01-24 02:44:39
我改變了這個職位的模特名字,因爲我想把名字保留在互聯網上。它應該是'身份證',但這不是一個困難的解決辦法。只需使用'set_primary_key'。 – user94154 2010-01-24 03:21:37