我有两个模型:用户和产品。我想添加第三个模型,位置。
我创建了 Location 模型:rails generate model Location address:string
根据指南,我修改了app/models/model.rb
class Location < ActiveRecord::Base
belongs_to :localizable, polymorphic: true
end
class User < ActiveRecord::Base
has_one :location, as: :localizable
end
class Product < ActiveRecord::Base
has_one :location, as: :localizable
end
然后我在我的 Location 迁移文件中添加了 foreign_key 和一个索引:
class CreateLocations < ActiveRecord::Migration
def change
create_table :locations do |t|
t.string :address
t.integer :localizable_id
t.string :localizable_type
t.timestamps
end
add_index :locations, [:localizable_id, :localizable_type]
end
end
但它并没有像我想象的那样工作。当我使用 rails 控制台时,我无法获得 auser.location
或 a product.location
。它给我发回以下消息:
ActiveRecord::StatementInvalid:
SQLite3::SQLException: no such column: locations.localizable_id: SELECT "locations".* FROM "locations" WHERE "locations"."localizable_id" = ? AND "locations"."localizable_type" = ? ORDER BY "locations"."id" ASC LIMIT 1
我是否必须t.integer :location_id
同时添加到用户和产品迁移文件?