2014-04-15 63 views
2

我有兩個對象:協會 - 外鍵

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> 

相對較新的軌道,所以任何的幫助深表感謝

回答

2

您有兩種選擇。

1.As @gregates建議你應該在你Condition模型添加foreign_key到您的關聯

class Condition < ActiveRecord::Base 
    belongs_to :category, class_name: 'ConditionCategory', 
    foreign_key: 'condition_category_id' 
end 

OR

2.Just修改Condition模型像this.Which很簡單而精確。

class Condition < ActiveRecord::Base 
belongs_to :condition_category 
end 

而且在你看來,你必須改變這樣的

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

以獲取與condition

相關的 condition_category的名字
1

foreign_key option for the belongs_to relation。預計外鍵匹配協會的名稱,而不是class_name(當它們不同時)。所以,你需要同時指定:

belongs_to :category, class_name: 'ConditionCategory', 
         foreign_key: 'condition_category_id' 

或者,您可以在數據庫中的外鍵列重命名爲category_id