rails cancan AssociationTypeMismatch


ActiveRecord::AssociationTypeMismatch (User(#70244306330580) expected, got String(#70244198919200)):
activerecord (3.2.13) lib/active_record/associations/association.rb:204:in `raise_on_type_mismatch'
activerecord (3.2.13) lib/active_record/associations/belongs_to_association.rb:6:in `replace'
activerecord (3.2.13) lib/active_record/associations/singular_association.rb:17:in `writer'
activerecord (3.2.13) lib/active_record/associations/builder/association.rb:51:in `block in define_writers'
activerecord (3.2.13) lib/active_record/attribute_assignment.rb:85:in `block in assign_attributes'
activerecord (3.2.13) lib/active_record/attribute_assignment.rb:78:in `each'
activerecord (3.2.13) lib/active_record/attribute_assignment.rb:78:in `assign_attributes'
activerecord (3.2.13) lib/active_record/base.rb:498:in `initialize'
state_machine (1.2.0) lib/state_machine/integrations/active_record.rb:470:in `initialize'


如果遇到这个问题,那么请检查请求parameters里面是不是有一个Key-Value为"id": "", 如果有,请去掉。我这里用了cancan,配置了安全验证后,每个action都会去首先去取id为params[:id]的User。

代码:https://github.com/josevalim/inherited_resources/blob/master/lib/inherited_resources/base_helpers.rb#L51
def resource
get_resource_ivar || set_resource_ivar(end_of_association_chain.send(method_for_find, params[:id]))
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值