这可能是一个愚蠢的问题,但我在这里有点混淆:
我有一个用户模型,它有两个属性:头发和眼睛,可以有一个颜色值。
不是在用户表的头发和眼睛列中将颜色作为字符串引用两次,而是让我的属性将指向与我的用户模型关联的单独颜色模型。
我无法弄清楚如何做到这一点。我需要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
我知道这是一个非常基本的问题,但我真的需要一些帮助!
谢谢;)
答案 0 :(得分:1)
用户方案应包含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