我有一个表用户。他们可以在不同的用户个人资料中发布记录,因此对于每个帖子我都有user_id(在其个人资料中写了一篇帖子)和autor_id(谁写了帖子)。 请问你能帮助我 - 哪些关系应该是将帖子模型与用户连接两次? 现在我有这样的代码:
user.rb
has_many :posts, :dependent => :destroy
post.rb
belongs_to :user
has_one :author, :class_name => "User"
它不允许我调用 @ post.author.name ,因为我看到我将错误连接到用户模型。你能帮我吗?
答案 0 :(得分:2)
你的关联是错误的..他们应该是这样的
belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
现在您可以将其称为
@post.author.name
belongs_to
和has_one
之间存在差异,那就是当该表包含外键时,您应该定义belongs_to。
答案 1 :(得分:1)
最后我解决了这个问题:
user.rb
has_many :posts, :class_name => "Post", :foreign_key => "user_id"
has_many :records, :class_name => "Post", :foreign_key => "author_id"
post.rb
belongs_to :user, :class_name => "User", :foreign_key => 'user_id'
belongs_to :author, :class_name => "User", :foreign_key => 'author_id'
作者放置记录,用户获得作者撰写的帖子。谢谢,@ test