无法理解has_one关系

时间:2013-10-11 19:55:10

标签: ruby-on-rails activeadmin

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

我有两个模型PlanningSport。一个Planning关注Sport,许多Sport可以找到Planning。所以我用这种方式定义了Planning

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

我没有在Sport中添加有关Planning的任何内容。 在我看来,这将允许我访问planning.sport,但我不介意我找不到sport.plannings(这没有任何意义)。

问题在于,当我尝试使用Planning界面创建新的ActiveAdmin时,一旦我尝试访问plannings/new页面,就会出现以下错误:

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

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

我做错了什么?我需要使用中间模型吗?这个jsut是否与ActiveAdmin相关联?

谢谢!

1 个答案:

答案 0 :(得分:3)

您需要的是

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

class Sport

   has_many: plannings
end

你可以这样想,拥有外键的人就像孩子一样。因此,这里的规划具有运动的外键。所以它是体育的孩子,它属于运动。