モデル: 投稿とユーザー
投稿の所属先 :user
ユーザー has_many :posts
単純。
少数のユーザーが存在すると仮定して、投稿の編集ページにアクセスします。
<%= form_for @post do |f| %>
...
<% User.all.each do |user| %>
<div><%= f.radio_button "user_id", user.id %></div>
<% end %>
...
Post のコントローラーは、Rails 4 の強力なパラメーターを利用します。
params.require(:post).permit(:user_id)
編集投稿フォームには、フィールドとしてラジオ ボタンのみがあると仮定します。
問題: ActionController::ParameterMissing 例外がスローされます。パラメータが見つかりません: 投稿
Post params ハッシュが作成されないため、上記の例外がスローされます。たとえば、空のテキスト フィールドとは異なり、空のラジオ ボタンは、モデルのパラメーター ハッシュの作成をトリガーしません。
Post モデルで user_id が有効である必要がある場合はどうなりますか? 確かに、投稿を保存できない理由でビューを再度レンダリングしたいと思うでしょう。
質問: Rails の慣習に従いながら、この状況を処理するエレガントな方法は何ですか?
アップデート:
これについてさらにブレインストーミングすると、この問題を引き起こす状況は他にもたくさんあると思います。必ずしもラジオ ボタンに対応しているわけではありません。