アクティビティには、複数のタイプの参加者 (親、子供、または完全な家族) を含めることができます。
私のテーブルは、結合を行うためのアクティビティ、親、子供、家族、およびActivity_itemsです。Routes : activity_items はアクティビティの下にネストされています。
Activity_items には、参加者をアクティビティにリンクするための activity_id フィールドがあります。また、親、子、または家族をリンクするための activity_itemable_id と type があります (ここではポリモーフィズムを示します)。
目標は、特定の日の活動の参加者のリストを作成することです。アクティビティの view#show で詳細を確認し、参加者を追加できます (アイテムを作成します)。
私のコードが適切ではないことを確信している場所:
activity_items コントローラーでアクションを作成します。
def create
@activity = Activity.find(params[:activity_id])
@activity_item = @activity.activity_items.new(activity_itemable_id: params[:itemable_id], activity_itemable_type: params[:itemable_type])
そして、このアイテムを作成するビューの link_to (参加者を追加)
<% @parents.each do |p| %>
<li>
<%= link_to "#{p.firstname} #{p.lastname}", activity_activity_items_path(@activity, itemable_id: p.id, itemable_type: p.class.name), method: :post %>
</li>
<% end %>
これが、必要なパラメーターを使用して適切な activity_items を作成するために自分で見つけた唯一の方法です。
基本 (params[:activity_item]) が機能していなかったので、上記のように params を取得することにしました。
ポリモーフィック アソシエーションに関する Railscast を見ていましたが、古いコードをどのように改善できるか疑問に思っていました。
この質問に関するドキュメントは大歓迎です。私のニーズに合ったものが見つかりませんでした。
ありがとう !