0

これはばかげた質問かもしれませんが、ここで少し混乱しています:

私は、色の値を持つことができる髪と目という2つの属性を持つユーザーモデルを持っています。

ユーザー テーブルの髪と目の列で色を文字列として 2 回参照する代わりに、別の Color モデルを User モデルに関連付けて、属性が指すようにしたいと思います。

その方法がわかりません。has_one、has_many、または多態的な関連付けが必要ですか? User モデルと Colors モデルを設定するにはどうすればよいですか? 髪と目の特定のモデルを作成する必要がありますか?

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_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
于 2012-04-10T12:48:08.980 に答える