0

这可能是一个愚蠢的问题,但我在这里有点困惑:

我有一个用户模型,它有两个属性:头发和眼睛,可以有一个颜色值。

我宁愿在用户表的头发和眼睛列中将颜色作为字符串引用两次,而是将一个单独的颜色模型关联到我的用户模型,我的属性将指向该模型。

我不知道该怎么做。我需要 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  

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

谢谢 ;)

4

1 回答 1

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
于 2012-04-10T12:48:08.980 回答