模型属于几个属性的另一种模式
问题描述:
这可能是一个愚蠢的问题,但我稍微混淆这里:模型属于几个属性的另一种模式
我有一个用户模式,它有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_id
和eyes_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
非常感谢你回答这么快!我真的被困在那里! – cl3m 2012-04-10 12:52:46