模型属于几个属性的另一种模式

问题描述:

这可能是一个愚蠢的问题,但我稍微混淆这里:模型属于几个属性的另一种模式

我有一个用户模式,它有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 

我知道这是一个非常基本的问题,但我真的需要一些帮助这里!

感谢)

用户方案应包含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