如果不使用默认表id作为表的主键,请问如何引用表?我创建了两个表,其中一个以电子邮件作为主键,我希望将此表电子邮件作为另一个表中的外键。请问我怎样才能做到这一点?
答案 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
作为外键 - 这可能是处理模型的更简单方法。