0

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

我有两个模型PlanningSport. A与一个Planning有关Sport,aSport可以在许多Plannings 中找到。所以我这样定义Planning

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

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

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

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

我的理解是它检查Sporta存在,但我的理解是 a中planning_id只有 a ,而不是相反...sport_idPlanning

我做错什么了?我需要使用中间模型吗?这个jsut链接到ActiveAdmin吗?

谢谢!

4

1 回答 1

3

你需要的是

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

class Sport

   has_many: plannings
end

你可以把它想象成,拥有外键的人就像孩子一样。所以这里的规划有体育的外键。所以它是Sport的孩子,它属于sport。

于 2013-10-11T19:58:54.113 回答