我有两个对象:
create_table "conditions", force: true do |t|
t.string "name"
t.integer "condition_category_id"
end
create_table "condition_categories", force: true do |t|
t.string "name"
end
我正在尝试使用另一列中的条件类别名称列出我的条件。但是,因为我用下划线命名它,我对如何正确设置关联有点困惑。我注意到模型被重写为ConditionCategory,但我仍然无法正常工作。
这是我的条件
模型class Condition < ActiveRecord::Base
belongs_to :category, class_name: 'ConditionCategory'
end
在我看来
<td><%= condition.category.name %></td>
相对较新的rails,所以非常感谢任何帮助
答案 0 :(得分:2)
您有两种选择。
1.如 @gregates 建议您在foreign_key
模型中将Condition
添加到您的关联
class Condition < ActiveRecord::Base
belongs_to :category, class_name: 'ConditionCategory',
foreign_key: 'condition_category_id'
end
或强>
2.只需修改你的Condition
模型。这非常简单和准确。
class Condition < ActiveRecord::Base
belongs_to :condition_category
end
在您看来,您必须像这样改变
<td><%= condition.condition_category.name %></td>
获取与condition_category
condition
的名称
答案 1 :(得分:1)
请参阅foreign_key
option for the belongs_to
relation。外键应该与关联的名称匹配,而不是class_name
(当它们不同时)。所以你需要同时指定:
belongs_to :category, class_name: 'ConditionCategory',
foreign_key: 'condition_category_id'
或者,您可以将数据库中的外键列重命名为category_id
。