用户模型
has_many :comments, :dependent => :destroy
has_many :topics, :dependent => :destroy
主题模型
belongs_to :user
has_many_comments, :dependent => :destroy
评论模型
belongs_to :user
has_many :topics, :dependent => :destroy
我知道在我创建新帖子时添加外键,我们写(我正在使用authlogic)
def create
@topic = current_user.topics.build(params[:topic])
end
但是我应该写什么来添加多个外键。例如,当我添加注释时,我应该写什么?评论属于User和Post。我不想使用隐藏字段。我需要控制器中的东西。
答案 0 :(得分:0)
我猜你想知道如何以与Comment
相同的方式创建@topic = current_user.topics.build(params[:topic])
,因为Comment有两个外键,对吗?
创建Comment
时,您会将请求发布到某个网址/posts/16/comments
。所以你可以这样做:
def create
@post = Post.find params[:post_id] # or with permission checking
@comment = @post.comments.build(params[:comment].merge(:user_id => current_user.id))
end
在创建评论时,user_id
不应该是用户输入中的任意数字,对于安全问题,您最好在评论模型中设置attr_protected
:
class Comment < ActiveRecord::Base
attr_protected :user_id
end
此外,在Post / Topic模型中也是如此。