Ruby on rails 3 - 帖子属于主题和用户.如何使用 :topic_id 和 :user_id 创建帖子,而



我正在做一个传统的论坛来学习/练习Rails。如您所熟悉的,用户可以创建主题和帖子。主题和帖子属于创建它们的用户,帖子属于发布它们的主题。注意:帖子是主题的嵌套资源。

User Model
  has_many :topics
  has_many :posts
Topic Model
  has_many :posts
  belongs_to :user
Post Model
  belongs_to :user
  belongs_to :topic

因此,当用户创建新帖子时,帖子需要user_idtopic_id

我知道范围关联与:

@user.posts.create(:title => "My Topic.")
@topic.posts.create(:content => "My Post.")

但这些例子只是分别设定了user_idtopic_id,而不是两者兼而有之。

我的问题

我怎么能做这样的事情:

@topic.posts.create(:content => "This is Dan's post", :user_id => @dan.id)

无需通过attr_accessible :user_id在 Post 模型中公开user_id

换句话说,我不想明确定义:user_id

我尝试了这样的事情:

dans_post = @user.posts.new(:content => "the content of my post")
@topic.posts.create(dans_post)

无济于事。

使用 build 而不是 new 来构建关联,因为它将正确定义外键。要解决您的问题,请使用merge将用户合并到帖子的参数中:

@topic.posts.build(params[:post].merge(:user => current_user))

相关内容

  • 没有找到相关文章

最新更新