私はここで概念的な問題で少し立ち往生しています。投稿、タグ、およびユーザーの次の [抽象化された] セットアップを想定します。
Post belongs_to Tag
Tag has_many Posts
User has_many Tags,
has_many Posts
ユーザーは、関連付けられたタグの 1 つを使用してのみ投稿にタグを付けることができます。
新しい投稿フォーム ビューには、タグを選択するための次のオプションがあります。
f.collection_select :tag_id, current_user.tags, ...
f.collection_select :tag_id, @tags,
そしてコントローラーの新しいアクションで:@tags = current_user.tags
質問: 概念的に正しいオプションはどれですか?
MVC の観点からは、私は間違いなく 2 番目のオプションを使用する傾向があります。collection_select でレンダリングする必要があるタグがユーザー (より具体的には、現在のユーザー) に関連付けられていることをビューが認識するのは正しくないようです。
ただし、collection_select の公式 API ドキュメントと、Web 上の他の チュートリアルには、次のようなものがあります。
collection_select(:post, :author_id, Author.all, ...)
これは明らかに最初のオプションを支持します。このアプローチのプロサイトでは、投稿の保存アクションが失敗し、新しいアクションを再度レンダリングしたい場合に備えて、コントローラーの作成アクションで @tags を再定義する必要はありません。
事前にご提案いただきありがとうございます。