添加对表的引用

时间:2017-03-19 00:55:43

标签: ruby-on-rails activerecord

如果不使用默认表id作为表的主键,请问如何引用表?我创建了两个表,其中一个以电子邮件作为主键,我希望将此表电子邮件作为另一个表中的外键。请问我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以创建包含电子邮件作为主键的表格,如下所示:

create_table :users, id: false do |t|
  t.string :email, primary_key: true
  t.string :name

  t.timestamps
end

create_table :posts do |t|
  t.string :title
  t.text :body
  t.string :user_email

  t.timestamps
end

定义你的模型:

class User < ActiveRecord::Base
  self.primary_key = 'email'
  has_many :posts, foreign_key: :user_email
end

class Post < ActiveRecord::Base
  belongs_to :user, foreign_key: :user_email
end

这就是你需要做的一切。此外,您可以将id保留为User模型的主键,但使用email作为外键 - 这可能是处理模型的更简单方法。