2015-05-07 25 views
1

我想要一個item能夠從ItemType表中獲取相關的記錄:如何使Active Record關聯在不創建foreign_key的情況下工作?

item = Item.first 

item.item_type # <--- ERROR 

但我得到一個錯誤:

SELECT "item_types".* FROM "item_types" WHERE "item_types"."item_id" = ? LIMIT 1 [[nil, 11]] SQLite3::SQLException: no such column: item_types.item_id: SELECT "item_types".* FROM "item_types" WHERE "item_types"."item_id" = ? LIMIT 1 ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: item_types.item_id: SELECT "item_types".* FROM "item_types" WHERE "item_types"."item_id" = ? LIMIT 1

從錯誤我可以看到加載ActiveModel試圖訪問item_id列。 但我不希望我的ItemType表中創建一個item_id列...這是與類型的項目,如枚舉表:

#id|name 

1|"Task" 
2|"User Story" 
3|"Bug" 
4|"Feature Request" 

項目模型

# 
# Table name: items 
# 
# id   :integer   not null, primary key 
# name   :string 
# created_at :datetime   not null 
# updated_at :datetime   not null 
# item_type_id :integer 
# 

class Item < ActiveRecord::Base 
    has_one :item_type 
end 

的ItemType型號

# == Schema Information 
# 
# Table name: item_types 
# 
# id   :integer   not null, primary key 
# name  :string 
# created_at :datetime   not null 
# updated_at :datetime   not null 
# 

class ItemType < ActiveRecord::Base 
end 

回答

2

您只有defi在模型Item中有關係,但是你也必須在模型ItemType中定義它:

class ItemType < ActiveRecord::Base 
    has_many :items 
end 
+0

它沒有幫助。我仍然得到這個錯誤:SELECT「item_types」。* FROM「item_types」WHERE「item_types」。「item_id」=? LIMIT 1 [[nil,21]] SQLite3 :: SQLException:no such column:item_types.item_id:SELECT「item_types」。* FROM「item_types」WHERE「item_types」。「item_id」=? LIMIT 1 ActiveRecord :: StatementInvalid:SQLite3 :: SQLException:no such column:item_types.item_id:SELECT「item_types」。* FROM「item_types」WHERE「item_types」。「item_id」=? LIMIT 1 – yaru

+0

如果您將'Item'模型中的關係更改爲:belongs_to:item_type? – zwippie

+0

現在有效。謝謝。 :) – yaru

相關問題