アプリケーション ユーザーは、タイトル、投稿のコンテンツ、および投稿のカテゴリを含む新しい投稿を入力できます。したがって、新しい投稿を作成するには、いくつかのフィールドを持つ単純な html フォームを使用します。次の理由により、新しい投稿を作成するためのロジックをどこに置くべきかわかりません。
投稿 (または投稿コレクション) は、たとえば、さまざまなテーブルから構成されるオブジェクトです。
@posts = User.joins(entries: [{storage: :vote}, :category])
.where("votes.count > ?", 0)
.select("users.username AS username,
storages.id AS storage_id,
storages.title AS title,
storages.content AS content,
votes.count AS votes,
categories.category_name AS category_name")
.order("votes.count DESC")
したがって、ユーザーが新しい投稿アプリケーションを作成するときは、別のテーブルに新しいエントリを作成する必要があります。
1.エントリテーブルに新しいエントリを作成します。2.ストレージテーブル(id, user_id, category_id)
に新しいエントリを作成します。
3.投票テーブルに新しいエントリを作成します。(id, title, content, entry_id)
(id, count, storage_id)
投稿がモデルである状況ではresources: posts
、投稿コントローラーで次のようなものを使用して新しい投稿new
をcreate
作成できますが、投稿コントローラーも投稿モデルも必要ないこのような状況ではどうでしょうか? 質問は、新しい投稿を作成するためのロジックを配置するのに適した場所はどれですか? Q1
私の解決策は、ストレージコントローラーをresource: storages, :only => [:new, :create]
作成してから、このコントローラーを新規作成して作成し、db にさまざまなテーブルを作成することですか? only
ストレージを個別に使用するのではなく、他のテーブルと組み合わせて使用するため、ここでは他の CRUD アクション (すべてまたは 1 つのストレージを表示するなど) のポイントが表示されないため、ここで強制しています。ビュー/ストレージから new.html.erb と create.html.erb を介して新しい投稿を作成できますか? Q2
別の解決策は、前に述べたように、「対応する」投稿モデルを持たない Post コントローラーを作成することです。:id
ここでは、投稿がないため、安らかなルート(CRUD)を使用できないと思いますか?
post 'posts/create/:title/:content/:category' => 'posts#create', :as => 'create_post'
次params[:title]
のような安らかなルートparams[:content]
を手動で作成することしかできませんparams[:category]
。Q3
私はレールに慣れていないので、怒鳴らないでください:D