Это действительно раздражает, им, вероятно, просто не хватает чего-то глупого. был на нем в течение 2 часов, может видеть, в чем проблема. Ошибка: ActiveModel :: ForbiddenAttributesError:ForbiddenAttributesError rspec create action
order.rb
has_many :item_lines
accepts_nested_attributes_for :item_lines
order_controller.rb
def create
if params[:v1_order][:item_lines_attributes].present?
puts "attributes: "
puts params[:v1_order][:item_lines_attributes] # {"quantity"=>"1", "net_price"=>"9.99"}
@v1_order = V1::Order.new(v1_order_params)
@v1_order.item_lines.build(params[:v1_order][:item_lines_attributes])
else
@v1_order = V1::Order.new(v1_order_params)
end
end
def v1_order_params
params.require(:v1_order).permit(:state, :vat, :order_date, :user_id,
:item_lines_attributes => [:quantity, :net_price])
end
order_controller_spec.rb
expect {
post :create,
:v1_order => {vat: 20, user_id: 1,state: 0,
:item_lines_attributes => [quantity: 2, net_price: 3]},
token: @user.api_key.token
}.to change(V1::Order, :count).by(1)
**below should also be valid, but no go **
post :create,
v1_order: FactoryGirl.attributes_for(:v1_order,
item_lines_attributes: FactoryGirl.attributes_for(:v1_item_line)),
Фабрики
factory :v1_order, :class => 'V1::Order' do
state 0
vat 20
user_id 1
end
factory :v1_item_line, :class => 'V1::ItemLine' do
quantity 1
net_price "9.99"
end
продолжать получать это:
Failure/Error: post :create,
ActiveModel::ForbiddenAttributesError:
ActiveModel::ForbiddenAttributesError
Я думаю, что это то, что они содержат: как вы можете видеть в контроллере, я использовал «puts params ...», чтобы проверить и распечатать правильные – Richardlonesteen