Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 关联-外键_Ruby On Rails_Associations - Fatal编程技术网

Ruby on rails 关联-外键

Ruby on rails 关联-外键,ruby-on-rails,associations,Ruby On Rails,Associations,我有两个目标: 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 我试图在另一列中列出条件类别名称为的条件。然而,由于我用下划线命名它,我对如何正确设置关联有

我有两个目标:

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相对较新,因此非常感谢您的帮助

请参阅。外键应与关联的名称相匹配,而不是
类名
(当它们不同时)。因此,您需要同时指定以下两项:

belongs_to :category, class_name: 'ConditionCategory',
                      foreign_key: 'condition_category_id'
或者,您可以将数据库中的外键列重命名为
category\u id

您有两个选项

1.正如@gregates所建议的,您应该在您的
条件
模型中的关联中添加
外键

class Condition < ActiveRecord::Base
    belongs_to :category, class_name: 'ConditionCategory',
    foreign_key: 'condition_category_id'
end
在你看来,你必须这样改变

<td><%= condition.condition_category.name %></td>

要获取与该
条件相关联的
条件\u类别的名称

<td><%= condition.condition_category.name %></td>