Ruby 如何使用唯一密钥作为外键
我在两个表,Ruby 如何使用唯一密钥作为外键,ruby,ruby-on-rails-4,rails-migrations,Ruby,Ruby On Rails 4,Rails Migrations,我在两个表,用户和标题之间有一个N:N关系。这些表使用第三个表purchases链接,该表应具有其他每个表的id。问题是,对于标题我不需要采购表中的标题id,而是标题表中名为项目id的另一列,它是唯一的和非空的 目前,我有以下迁移,但它不工作。我可能遗漏了什么: class CreatePurchases < ActiveRecord::Migration def change create_table :purchases, :id => false do |t|
用户
和标题
之间有一个N:N关系。这些表使用第三个表purchases
链接,该表应具有其他每个表的id
。问题是,对于标题
我不需要采购
表中的标题id
,而是标题
表中名为项目id
的另一列,它是唯一的
和非空的
目前,我有以下迁移,但它不工作。我可能遗漏了什么:
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
class CreatePurchasesfalse do | t|
t、 属于:标题,外键:'item\u id'
t、 属于:user,:null=>false
结束
结束
结束
如何使用titles
表上的item\u id
键,而不是title\u id
,让我的purchases
表引用titles
表?迁移:
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
class CreatePurchasesfalse do | t|
t、 整数:项目\u id
t、 整数:user_id,:null=>false
结束
结束
结束
在您的模型中:
# 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
#app/models/title.rb
类标题
如果迁移需要,不要伪造添加索引