我有一个模型依赖于其他两个模型的关联:
class InventoryItem < ActiveRecord::Base
attr_accessible :vendor_id, :price, :upc
has_many :items
belongs_to :vendor
end
我的问题是:如果我在连接模型中有这些关联,我是否需要在迁移中再次指定这些关联以创建inventory_items表,以便包含以下属性:items和:vendor?以下是创建该表的当前迁移(尚未运行):
class CreateInventoryItems < ActiveRecord::Migration
def change
create_table :inventory_items do |t|
t.integer :upc
t.decimal :price
t.integer :vendor_id
end
end
end
浏览sqlit3数据库让我相信我确实需要以某种方式做到这一点。最好的方法吗?我对RoR很新,所以欢迎任何反馈意见。
答案 0 :(得分:0)
您的模型需要了解所有关联,但您的迁移不关心关联。只要您的子模型中有外键,就可以在迁移中正确设置数据库级别的关联。
使用Rails,我们的想法是在数据库级别上尽可能少地做,并尽可能在应用程序(ORM)级别上执行。因此,您让模型了解关联,这将使他们能够使用相应的ORM方法来处理关联,但您的数据库不需要知道关联。