Model class:
class User < ActiveRecord::Base
has_one :data, inverse_of: :user
accepts_nested_attributes_for :data
end
Posted body
{data: {active: false}, data_attributes: {active: false}, nickname: "nick"}
Rails Log
Parameters: {"data"=>{"active"=>false}, "data_attributes"=>{"active"=>false}, "nickname"=>"nick", "id"=>"1", "user"=>{"nickname"=>"nick"}}
params:
<ActionController::Parameters {"data"=>{"active"=>false}, "data_attributes"=>{"active"=>false}, "nickname"=>"nick", "controller"=>"api/users", "action"=>"update", "id"=>"1", "user"=>{"nickname"=>"nick"}} permitted: false>
params.require(:user).permit(:nickname, data_attributes: [:active])
<ActionController::Parameters {"nickname"=>"nick"} permitted: true>
User.new(a)
#<User id: nil, provider: "email", uid: "", name: nil, nickname: "nick", image: nil, email: nil, created_at: nil, updated_at: nil>
User.new(a).data
nil
What's wrong. Is it right beahaviour? What need to fix to nested data object properly create?
Data hash should be like this:
{user: {active: false}, data_attributes: {active: false}, nickname: "nick"}
Problem is that your hash is:
Parameters: {"data"=>{"active"=>false}, "data_attributes"=>{"active"=>false}, "nickname"=>"nick", "id"=>"1", "user"=>{"nickname"=>"nick"}}
It should be:
Parameters: {"user"=>{"nickname"=>"nick", "id"=>"1","data_attributes"=>{"active"=>false}}