在三个模型之间设置has_many关系中的id

时间:2012-03-29 19:57:06

标签: ruby ruby-on-rails-3 rails-activerecord

用户可以创建帖子。帖子有评论。评论必须同时属于用户和帖子,但不一定是创建帖子的用户。以下是建模的最佳方法:

class User < ActiveRecord::Base
  has_many :posts
  has_many :comments
end

class Post < ActiveRecord::Base
  belongs_to :user
  has_many :comments
end

class Comment < ActiveRecord::Base
  belongs_to :user
  belongs_to :post
end

如果是这样,确保的最佳做法是什么:

  1. user.comments.new无法调用。我希望使用与之关联的post创建所有新帖子。
  2. 调用id
  3. 时,正确设置了创建评论的用户的post.comments.new

    否则,建立这种关系的更好方法是什么?

1 个答案:

答案 0 :(得分:1)

你的模特很好。

要设置评论的作者,您必须在控制器中执行此操作:

@comment = post.comments.new do |c|
    c.user = current_user
end

请勿使用user.comments.new。为什么你想让它无法使用呢?