Banana モデルと Image モデルの間に 1 対多の関連付けがあります。
さらに、各 Banana と Image は User に属します (Image とその Banana は異なる User を持つ可能性があるため、個別の関連付けを介して)。
イメージと同様にバナナを作成するためのネストされたフォームが必要です。キッカーは、構築するイメージの数がわからないことです (複数の属性に注意してください)。以下のフォームのコメントアウトされたビットは、適切な量の画像を作成しますが、関連するユーザー参照を完成しません。私が試みたように、fields_forでこれを達成する方法はありますか(したがって、関連付けが完了します)?
バナナモデル
class Banana < ActiveRecord::Base
belongs_to :user
validates_presence_of :user
has_many :images, dependent: :destroy
accepts_nested_attributes_for :images
validates_associated :images
end
画像モデル
class Image < ActiveRecord::Base
belongs_to :user
validates_presence_of :user
belongs_to :banana
validates_presence_of :banana
has_attached_file :img
end
形
<%= form_for @banana, :validate => true, :html => { :multipart => true } do |f| %>
<!-- <input type="file" name="banana[images_attributes][][img]" multiple />-->
<%= f.fields_for 'images_attributes[]', @banana.images do |builder| %>
<%= builder.file_field :img, multiple: true %>
<% end %>
<% end %>
コントローラ
class BananasController < ApplicationController
def create
@banana = current_user.bananas.build(banana_params)
render :new unless @banana.save
end
def new
@banana = Banana.new
end
private
def banana_params
params.required(:banana).permit(images_attributes: [:img])
end
end