Я предполагаю, что у вас есть это в модели комментариев:
attr_accessible :content
, и когда вы пытаетесь создать комментарий, это происходит:
@post = Post.first
@post.comments.build(:user=>current_user)
# => WARNING: Can't mass-assign protected attributes: user
Так что это не сработает.
Если вы хотите защитить user_id и post_id от перезаписи в обновлении, вы можете сделать это:
attr_accessible :content, :user_id, :post_id
attr_readonly :user_id, :post_id
@post = Post.first
@post.comments.build(:user=>current_user)
@post.save!
# sets user_id when creating
@post.user_id = 37
@post.save!
# saves, but user_id is not changed. No warning is logged.
@post.update_attributes(:user_id=>37)
# same as above
@post.update_attribute(:user_id,37)
# raises ActiveRecord::ActiveRecordError: user_id is marked as readonly
Но это выглядит как перебор, так как, по-видимому, ваше приложение не отправит формус user_id для существующего комментария, и кто-то должен будет написать свою форму и опубликовать ее, чтобы изменить идентификатор.