Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何使用唯一密钥作为外键_Ruby_Ruby On Rails 4_Rails Migrations - Fatal编程技术网

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
类标题
如果迁移需要,不要伪造添加索引