如何通过user_id和author_id为用户分配帖子?

时间:2015-06-07 14:02:42

标签: ruby-on-rails activerecord relationship

我有一个表用户。他们可以在不同的用户个人资料中发布记录,因此对于每个帖子我都有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 ,因为我看到我将错误连接到用户模型。你能帮我吗?

2 个答案:

答案 0 :(得分:2)

你的关联是错误的..他们应该是这样的

belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'

现在您可以将其称为

@post.author.name

belongs_tohas_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