Модель: Сообщения и пользователи
Сообщение принадлежит_у: user
Пользователь has_many: posts
Simple.
Предполагая, что существует несколько пользователей, мы посещаем страницу редактирования для сообщения.
<%= form_for @post do |f| %>
...
<% User.all.each do |user| %>
<div><%= f.radio_button "user_id", user.id %></div>
<% end %>
...
Post Controller использует сильные параметры Rails 4.
params.require(:post).permit(:user_id)
Предположим, что в форме редактирования сообщения есть только переключатели.
Проблема: генерируется исключение ActionController:: ParameterMissing. param не найден: post
Причина, заключающаяся в том, что хэш-код Post param никогда не создается, вызывая выброс вышеуказанного исключения. Пустые переключатели, в отличие от пустых текстовых полей, например, не запускают хеш-память модели.
Что делать, если модель Post требует, чтобы user_id был действительным? Конечно, нужно было бы снова просмотреть представление, потому что сообщение не может быть сохранено.
Вопрос: Каков элегантный способ справиться с этой ситуацией, придерживаясь соглашения Rails?
UPDATE:
Мозговой штурм об этом дальше, я уверен, что, вероятно, есть много других ситуаций, которые порождают эту проблему; это не обязательно соответствует переключателям.