私の完全なエラーメッセージは次のとおりです。
ActiveModel::MassAssignmentSecurity::WorkoutsController#create のエラー保護された属性を一括割り当てできません:workout_entry
私が送信しているパラメーターは次のようになります。
{"workout"=>{"unit"=>"kg", "name"=>"2013-02-20T21:26:19", "note"=>nil, "workout_entry"=> [{"workout_entry_number"=>"1", "exercise_id"=>2, "entry_detail"=>[{"set_number"=>"1", "weight"=>"32", "reps"=>"43"}]}]}}
多くのワークアウト エントリを持つワークアウトがあり、各ワークアウト エントリには多くのエントリの詳細を含めることができます。メモはオプションです。
ワークアウト.rb
class Workout < ActiveRecord::Base
has_many :workout_entries, dependent: :destroy
attr_accessible :id, :name, :note, :unit, :workout_entries_attributes
belongs_to :user
accepts_nested_attributes_for :workout_entries
validates_presence_of :name
validates_presence_of :unit, :inclusion => %w(kg lb)
validates_associated :workout_entries
default_scope order("created_at DESC")
end
ワークアウト_エントリー.rb
class WorkoutEntry < ActiveRecord::Base
belongs_to :workout
belongs_to :exercise
has_many :entry_details, dependent: :destroy
attr_accessible :workout_id, :exercise_id, :workout_entry_number, :entry_details_attributes
accepts_nested_attributes_for :entry_details
validates :exercise_id, presence: true, numericality: {only_integer: true}, :inclusion => { :in => 1..790 }
validates :workout_id, presence: true, numericality: {only_integer: true, greater_than_or_equal_to: 1}
validates :workout_entry_number, presence: true, numericality: {only_integer: true, greater_than_or_equal_to: 1}
end
ワークアウト_コントローラー.rb
class WorkoutsController < ApplicationController
respond_to :json
before_filter :authenticate_user!
def index
respond_with(current_user.workouts)
end
def show
respond_with(current_user.workouts.find(params[:id]))
end
def create
respond_with(current_user.workouts.create(params[:workout]))
end
def update
@workout = current_user.workouts.find(params[:id])
if @workout.update_attributes(params[:workout])
render json: @workout, status: :ok
else
render json: @workout.errors, status: :unprocessable_entity
end
end
def destroy
respond_with(current_user.workouts.destroy(params[:id]))
end
end
ワークアウト.rb内のattr_accessibleとaccepts_nested_attributes_forの順番を入れ替えてみたのですがうまくいきません。
私も設定しようとしました
config.active_record.whitelist_attributes = true
しかし、作成はまだ妨げられていました。