Я немного застрял здесь с концептуальной проблемой. Предположим, что следующая [абстрактная] настройка для Post, Tag и User:
Post belongs_to Tag
Tag has_many Posts
User has_many Tags,
has_many Posts
Пользователь может пометить сообщение только одним из связанных с ним тегов.
В новом виде формы публикации теперь у меня есть следующие варианты выбора тега:
f.collection_select :tag_id, current_user.tags, ...
f.collection_select :tag_id, @tags,
и в новом действии контроллера:
@tags = current_user.tags
Вопрос: Что такое концептуально правильный вариант?
С точки зрения MVC, я определенно склонен использовать второй вариант. Неправильно, что представление знает, что теги, которые оно должно отображать в collection_select, связаны с пользователем (даже более конкретно, с текущим пользователем!).
Тем не менее, в официальной документации API для collection_select и некоторых других учебных пособий в Интернете я вижу нечто подобное:
collection_select(:post, :author_id, Author.all, ...)
, что явно благоприятствует первому варианту. На про-сайте этого подхода мне не нужно переопределять @tags в действии create контроллера, если сбой действия сохранения сообщения завершен, и я хочу снова отобразить новое действие.
Спасибо за ваши предложения заранее.