我有一个消息模型和一个用户模型。我的消息belongs_to
我的用户和用户has_many
消息。
我试图允许用户在他们的公共个人资料页面(他们的显示模板)上向另一个用户发送私人消息。我已经尝试了很多尝试,但最终我又遇到了需要 ID 的问题attr_accessible
(我听说这样做不好)。难道我做错了什么?
我的消息模型,我有:user_id
(这是当前用户,又名sending_from
ID):to_id
,,,:content
。
当我查看用户个人资料页面时,在显示模板上我有
<%= form_for([current_user, @message]) do |f| %>
<%= f.hidden_field :to_id, :value => @user.id %>
<div class="field">
<%= f.text_area :content, placeholder: "Send a private message..." %>
</div>
<%= f.submit "Post", class: "btn btn-large btn-primary" %>
<% end %>
在我的用户展示操作中,我有
def show
@user = User.find(params[:id])
@microposts = @user.microposts.paginate(page: params[:page])
if user_signed_in?
@message = current_user.messages.build(params[:messages], to_id: @user.id)
end
end
当表单提交时,它会转到我的消息创建操作
def create
@message = current_user.messages.build(params[:message])
redirect_to user_path(params[:message][:to_id])
end
但是,我总是得到错误
`Can't mass-assign protected attributes: to_id`
似乎我可以通过 make 修复它:to_id attr_accessible
,但是我听说这样做不是很安全。难道我做错了什么?这个问题一直在杀死我。
任何帮助,将不胜感激。谢谢