2013-10-11 47 views
0

我在理解has_one关系时遇到一些问题。无法理解has_one关系

我有两个型号PlanningSport。 A Planning担心一个SportSport可以在许多Planning s中找到。所以我定义我的Planning这样:

class Planning 
    ... 
    has_one :sport 
    ... 
end 

而且在Sport关于Planning我不添加任何东西。 在我看来,这将允许我访问planning.sport,但我不介意我找不到sport.plannings(这没有任何意义)。

的问题是,当我尝试使用我的ActiveAdmin界面来创建一个新的Planning,我有,当我尝试访问plannings/new页以下错误:

undefined method `planning_id' for #<Planning:0x30d8570> 

我的理解是,它在Sport检查一个planning_id存在,但我的理解是,有刚刚在Planning,而不是相反一sport_id ...

我做了什么错?我需要使用中介模式吗?这是否与ActiveAdmin联系?

谢谢!

回答

3

你需要的是

class Planning 
    ... 
    belongs_to :sport 
    ... 
end 

class Sport 

    has_many: plannings 
end 

你可以认为它像,谁就拥有外键就像是孩子。所以这里的计划有体育的外在关键。所以它是体育的孩子,它属于体育。

+0

哇我真不敢相信那么简单......感谢Vimsha!我确信我已经测试过了。我意识到为了充分理解Rails的逻辑,我还有很多事情要做! – jbihan