2013-07-23 34 views
0

我有兩個與海誓山盟相關的模型,每個條目可以有一個類別。相反,我猜這個類別也可能有很多條目。如何訪問相關模型中的字段?

class Entry < ActiveRecord::Base 
    has_one :category 
end 

class Category < ActiveRecord::Base 
    belongs_to :entry 
end 

我的模式爲兩種模式是這樣的:

create_table "categories", :force => true do |t| 
    t.string "name" 
    t.text  "description" 
    t.datetime "created_at", :null => false 
    t.datetime "updated_at", :null => false 
end 

create_table "entries", :force => true do |t| 
    t.text  "description" 
    t.datetime "created_at", :null => false 
    t.datetime "updated_at", :null => false 
    t.text  "address" 
    t.float "longitude" 
    t.float "latitude" 
    t.integer "user_id" 
    t.string "name" 
    t.integer "category_id" 
end 

我的索引頁是基於@ entries.all目前構建從入門車型取得的數據的數組。我的索引頁顯示的category_id很好,但是更好的辦法是從Category的連接模型中提取名稱。

所以如果entry.category_id給我的ID我怎麼能得到這個名字?

回答

1

您的關聯看起來不正確。根據你的數據庫模式,關係是類別has_many條目和條目belongs_to類別。如果根據模型判斷,類別表應該具有entry_id而不是具有category_id的條目表。

要重構,如果您的邏輯僅允許每個條目有一個類別,那很容易。

class Entry < ActiveRecord::Base 
    belongs_to :category 
end 

class Category < ActiveRecord::Base 
    has_many :entries 
end 

# Then `entries` table should have one field `category_id` 

# To access an entry's category as per you requested: 
@entry.category 

如果您的邏輯是一個條目可能有多個條目,則需要使用多對多關係和一箇中間表。

+0

啊!這是有效的,我從邏輯上扭曲了一些問題,並且從此嘗試了更多,並且更好地理解它。感謝@billy chan –

相關問題