Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Activerecord 接受\u嵌套的\u属性\u用于:如果记录重复,如何拒绝记录_Activerecord_Ruby On Rails 4 - Fatal编程技术网

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)仅在模型对象上可用。我们需要查看您的参数和表单以了解更多信息。