我在2个表users
和titles
之间存在N:N关系。这些表使用第三个表purchases
进行链接,该表应该具有每个其他表的id
。问题是对于titles
我不需要title_id
表上的purchases
,而是名为item_id
的{{1}}和UNIQUE
的不同列1 {}在NOT NULL
表上。
目前我有以下迁移,但它无效。我可能会遗漏一些东西:
titles
如何使用class CreatePurchases < ActiveRecord::Migration
def change
create_table :purchases, :id => false do |t|
t.belongs_to :title, foreign_key: 'item_id'
t.belongs_to :user, :null => false
end
end
end
表上的purchases
键而不是titles
让我的item_id
表引用titles
表?
答案 0 :(得分:1)
迁移:
class CreatePurchases < ActiveRecord::Migration
def change
create_table :purchases, :id => false do |t|
t.integer :item_id
t.integer :user_id, :null => false
end
end
end
在你的模特中:
# app/models/title.rb
class Title < ActiveRecord::Base
# ...
has_and_belongs_to_many :users,
class_name: "User",
foreign_key: "item_id",
association_foreign_key: "user_id",
join_table: "purchases"
# ...
end
# app/models/user.rb
class User < ActiveRecord::Base
# ...
has_and_belongs_to_many :titles,
class_name: "Title",
foreign_key: "user_id",
association_foreign_key: "item_id",
join_table: "purchases"
# ...
end
如果需要,请不要忘记为迁移添加索引。