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
Ruby on rails 4 Rails 4.1.1 ActiveAdmin未定义方法find_或create_by_id_Ruby On Rails 4_Activeadmin - Fatal编程技术网

Ruby on rails 4 Rails 4.1.1 ActiveAdmin未定义方法find_或create_by_id

Ruby on rails 4 Rails 4.1.1 ActiveAdmin未定义方法find_或create_by_id,ruby-on-rails-4,activeadmin,Ruby On Rails 4,Activeadmin,我发誓我尽了一切努力避免发表这个问题。我一整天都在研究这个问题 每当我尝试删除多个用户或编辑单个用户时,都会出现以下错误: A NoMethodError occurred in users#update: undefined method `find_or_create_by_id' for #<Class:0x00000006fed200> app/admin/users.rb:34:in `block (2 levels) in <top (required)&

我发誓我尽了一切努力避免发表这个问题。我一整天都在研究这个问题

每当我尝试删除多个用户或编辑单个用户时,都会出现以下错误:

A NoMethodError occurred in users#update:

  undefined method `find_or_create_by_id' for #<Class:0x00000006fed200>
  app/admin/users.rb:34:in `block (2 levels) in <top (required)>'
我已经尝试了我能想到的一切。。。看看所有相似的线索。。。我什么也没想到。那么有没有人有什么想法?

使用以下方法:

User.where(id: params[:id]).first_or_create
这些查找程序从4开始就被弃用,从4.1开始被删除

您正在查找
用户。查找或创建用户(用户id:params[:id])
以及


注意:它们还没有被弃用为函数。他们只是把表格改成了。

好吧,现在我有个问题,既然你们两个同时回答了,我就给谁打绿色的对勾……就让你们知道。他们还在轨道上。4.1 stable的源代码中有它们(ctrl-f
find_或_create_by
查看用法),我不知道为什么user1035375坚持说它们没有。他引用了一些博客,只说旧的表格被弃用了,这是真的。但是你没有使用旧的表单。我在rails 4.1.1上测试了这一点,没有使用
activerecord-deprecated_finders
gem,它仍然有效。在这种情况下,我很高兴我击败了你!)新版本仍然更干净,虽然我相信你的两种方法都会奏效,但我更喜欢你的方法,因为它稍微简单一些。我不认为find_或create_by被弃用。。。但应该是这样。很可能最终会被删除(“where”更容易使用…),非常感谢。它实际上被删除了,因为它变得更干净,并且不必使用meta_编程。这就是消息所说的
未定义的方法find\u或\u create\u by\u id
。这种方法不再存在。如果你的应用程序严重依赖它们,你可以通过要求gem:
activerecord-deprecated\U finders
将它们放回原处,这样我选择得很明智!
User.where(id: params[:id]).first_or_create