0

我想把 Model.attribute 变成 Attribute.models。

例如我目前有Model.first.attribute => "string"并且我想添加belongs_to :attributes到 Model.rb 中,然后在创建 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 模型中应该有一个model_id

然后你可以做

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

更新

你所做的对我来说似乎没问题。唯一的问题是你会有一个列和另一个在 Modelattribute中命名attribute_id的列。belongs_to我不知道当您键入 Model.first.attribute 时 ActiveRecord 会如何反应。

于 2012-06-19T13:03:07.180 回答