0

ユーザー、コレクション、デザインの 3 つのモデルがあります。

私のモデル =

ユーザーモデル

 `has_many :collections
  has_many :designs, :through => :collections`

コレクションモデル

`belongs_to :user
 has_many: designs`

設計モデル

`belongs_to :user
 belongs_to :collection`

コレクションを作成しようとすると、すべてうまくいきます。(current_user) を使用して関連付けられた user_id を含むすべてのパラメーターが DB に保存されます。

(コレクションに属する) デザインを作成しようとすると、私の問題が発生します。新しいデザインを作成すると、user_id が保存されません

ここに、 new および create メソッド用の私の Designs コントローラーがあります

デザインコントローラー:

`def new
   if signed_in? && current_user == @collection.user
     @user = current_user
     @collection = @user.collections.find(params[:collection_id])
     @design = @collection.designs.new
   else
     flash[:error] = "That's not your collection"
     redirect_to root_url
  end
end`

'def create
   @collection = current_user.collections.find(params[:collection_id])
   @design = @collection.designs.new(design_params)

   respond_to do |format|
     if @design.save
       format.html { redirect_to collection_designs_path(@collection), notice: 'Design was successfully created.' }
      format.json { redirect_to collection_designs_path(@collection) }
    else
      format.html { render 'designs/new' }
      format.json { render json: @design.errors, status: :unprocessable_entity }
    end
  end
end`

これが私が使用しているフォームです(フィールドを除いたもの)

`<%= form_for [@collection, @design], :html => { :multipart => true, :class => "auth" } do |f| %>
   <fields are here>
 <% end %>`

明確にするために、フォームを送信するとフォームが機能し、collection_id が添付されたデザインが作成されますが、残念ながら user_id はそれに関連付けられていません...

4

1 に答える 1