2012-04-10 115 views
0

這可能是一個愚蠢的問題,但我稍微混淆這裏:模型屬於幾個屬性的另一種模式

我有一個用戶模式,它有2個屬性:頭髮和眼睛,能有一個顏色值。

而不是將顏色作爲字符串在用戶表的頭髮和眼睛列中兩次引用,我寧願有一個單獨的Color模型與我的用戶模型相關聯,我的屬性將指向。

我不知道該怎麼做。我需要has_one,has_many還是多態關聯?我如何設置我的用戶和顏色模型?我是否需要爲頭髮和眼睛創建特定模型?

這裏是我想要的東西在Rails控制檯:

u = User.first 
u.update_attribute(:hair, Color.find_by_name("blue") 
u.update_attribute(:eyes, Color.find_by_name("green") 
u.save 

u.eyes # green 
u.hair # blue 

我知道這是一個非常基本的問題,但我真的需要一些幫助這裏!

感謝)

回答

1

用戶方案應包含hair_color_ideyes_color_id字段

class User < ActiveRecord::Base 
    belongs_to :hair_color, class_name: "Color" 
    belongs_to :eyes_color, class_name: "Color" 
end 

大二

u = User.new 
u.hair_color = Color.find_or_create_by_name("blue") 
u.eyes_color = Color.find_or_create_by_name("green") 
u.save 
... 
u.hair_color.name 
#=> blue 
+0

非常感謝你回答這麼快!我真的被困在那裏! – cl3m 2012-04-10 12:52:46

相關問題