0

Model.attributeをAttribute.modelsに変換したいと思います。

たとえば、現在持っていて、Model.rbModel.first.attribute => "string"に追加したいのですがbelongs_to :attributes、Attribute.rbを作成した後、has_many :models

:attribute_idのモデルテーブルに列を追加しました。次のようなことをしようとしています。

Model.each do |m|
  a = Attribute.find_or_create_by_name(m.attribute)
  m.update_attribute("attribute_id", a.id)
end

これはこれを達成するための正しい方法ですか?

4

1 に答える 1

0

Model has_many :attributes(および Attribute belongs_to :model) の場合、 Attribute モデルに a が必要model_idです。

それからあなたはすることができます

Model.all.each do |m|
  m.attributes.create!(:name => m.attribute) unless m.attributes.find_by_name(m.attribute)
end

アップデート

あなたがしたことは、私にとってはOKのようです。唯一の問題は、in Modelで名前が付けられた列attributeと別の onがあることです。Model.first.attribute と入力したときに ActiveRecord がどのように反応するかはわかりません。attribute_idbelongs_to

于 2012-06-19T13:03:07.180 に答える