メッセージ モデルとユーザー モデルがあります。私のメッセージ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`
を作成することで修正できるようですが、そうする:to_id attr_accessible
のはあまり安全ではないと聞いています。私は何か間違ったことをしていますか?この問題は私を殺しています。
どんな助けでも大歓迎です。ありがとう