Полагаю, вам интересно, как создать Comment
таким же образом, как @topic = current_user.topics.build(params[:topic])
, потому что в Comment есть два внешних ключа, верно?
При создании Comment
вы отправляете запрос по некоторому URL-адресу, например /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 тоже.