Activerecord 接受\u嵌套的\u属性\u用于:如果记录重复,如何拒绝记录
我想拒绝,如果记录是重复的这里是代码Activerecord 接受\u嵌套的\u属性\u用于:如果记录重复,如何拒绝记录,activerecord,ruby-on-rails-4,Activerecord,Ruby On Rails 4,我想拒绝,如果记录是重复的这里是代码 accepts_nested_attributes_for :member_im_messenger_names, allow_destroy: true , reject_if: lambda {|attributes| puts attributes.inspect attributes['im_screen_name'].blank? or MemberImMessengerName.where('member_id=? AND im_scree
accepts_nested_attributes_for :member_im_messenger_names, allow_destroy: true , reject_if: lambda {|attributes| puts attributes.inspect
attributes['im_screen_name'].blank? or MemberImMessengerName.where('member_id=? AND im_screen_name=? AND im_messenger_name_id=?',self.id,attributes['im_screen_name'],attributes['im_messenger_name_id']).count>0 }
我无法在此代码块中获取当前模型id。我试过self.id和attributes[:id],但都没有成功
请建议如何获取id。因为self.id返回null 我使用以下方法完成此操作:
accepts_nested_attributes_for :member_im_messenger_names, allow_destroy: true, reject_if: :im_already_exists_or_empty
def im_already_exists_or_empty(attributed)
return true if attributed['im_screen_name'].blank? or MemberImMessengerName.where('member_id=? AND im_screen_name=? AND im_messenger_name_id=?',self.id,attributed['im_screen_name'],attributed['im_messenger_name_id']).count>0
false
end
如果缺少attributes[:id],则表示您的表单没有提交id。您能否在提交表单时显示参数的外观?或者更好,表单视图本身?基本上self.id不是声明接受\u嵌套的\u属性\u的模型属性的属性字段。\u。在reject\u if lambda中,self是模型类而不是模型对象。属性方法(包括id)仅在模型对象上可用。我们需要查看您的参数和表单以了解更多信息。