我在理解has_one
关系时遇到了一些问题。
我有两个模型Planning
和Sport
。一个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
相关联?
谢谢!
答案 0 :(得分:3)
您需要的是
class Planning
...
belongs_to :sport
...
end
class Sport
has_many: plannings
end
你可以这样想,拥有外键的人就像孩子一样。因此,这里的规划具有运动的外键。所以它是体育的孩子,它属于运动。