3桌的关系

时间:2016-05-06 20:01:45

标签: ruby-on-rails activerecord

我有3个表:animalstudies,especies和procedences,其中

animalstudy belongs_to especie
animalstudy has_many_procedences
especie has_many animalstudies
procedence belongs_to animalstudy

当我创建一个程序时,我可以将它与以这种方式从选择中拉出的预算相关联:

f.select :animalstudy_id, Animalstudy.all.collect(|as| [as.especie.name, as.id]}

我想在procdences视图(索引和显示)中显示选择的especie而不是id的名称。在控制台,我试图这样做:

p=Procedence.first
name = p.animalstudy.especie.name

它给了我这个错误:

NoMethodError: undefined method `especie' for nil:NilClass.

我哪里错了?

1 个答案:

答案 0 :(得分:0)

记住它与许多人的关系,不要忘记has_many通过。

我认为这样做:

animalstudy
has_many :procedences
has_many :especies, through: procedences

especies
has_many :procedences
has_many :animalstudies, through: procedences

procedence
belongs_to :animalstudy
belongs_to :especie

也许这种关系更正确。见,请给我打分。