Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.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 Rails新模型字段抛出未定义方法错误_Ruby On Rails_Activerecord - Fatal编程技术网

Ruby on rails Rails新模型字段抛出未定义方法错误

Ruby on rails Rails新模型字段抛出未定义方法错误,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我意识到在这个问题上有几个如此多的问题,并且描述得相当详细,但没有被接受或跟进 我在使用迁移的模型中添加了一个新字段“is_ignored”;该字段已在mysql数据库中。该字段列在schema.rb中,并在模型定义中标记为attr_accessible,但在尝试赋值时仍会抛出未定义的方法错误 这就是我的工作 迁移(按预期工作并填充字段): 模式(注意RM中的“go to declaration”将我带到这里,就像它带到工作字段一样): 控制器: params[:selected_users

我意识到在这个问题上有几个如此多的问题,并且描述得相当详细,但没有被接受或跟进

我在使用迁移的模型中添加了一个新字段“is_ignored”;该字段已在mysql数据库中。该字段列在schema.rb中,并在模型定义中标记为attr_accessible,但在尝试赋值时仍会抛出未定义的方法错误

这就是我的工作

迁移(按预期工作并填充字段):

模式(注意RM中的“go to declaration”将我带到这里,就像它带到工作字段一样):

控制器:

  params[:selected_users].each do |id|
    @user = User.find(id)
    @user.is_ignored = false #here is where the error is being thrown
    @user.save
  end
到目前为止,我在控制器上投入了大量的时间,如果不是绝对必要的话,我宁愿不把它吹走,也不重新搭建脚手架。手动向模型添加新字段是否还有其他步骤我可能忽略了

编辑:

我还验证了我可以访问这个字段并从rails控制台设置一个值,并且在执行调用时,@user在我的控制器中不是nil;但它仍然抛出这个未定义的_方法错误

第二次编辑:

所以这很酷;一位朋友建议如下替换此方法调用:

@user.update_attribute( :is_ignored, false )

这是我们期待的工作,但没有!它抛出了与以前相同的未定义方法错误…

您不必将该字段添加到attr\u accessible,因为它是一个列备份字段(active record将能够在不使用任何其他代码的情况下使用该字段)。您是否尝试重新启动开发服务器(重新运行“rails服务器”)?

您不必将该字段添加到attr\u accessible,因为它是一个列备份字段(active record可以在不使用任何其他代码的情况下使用该字段)。您是否尝试重新启动您的开发服务器(重新运行“rails服务器”)?

我的一位朋友帮我解决了这个问题,最后归结到我是如何从表单中获取ID的:

<td><%= check_box_tag "selected_users[#{ignored_user.id}]" %></td>
将我的代码更改为将第二个参数向下输送到do块中会拆分此哈希,并允许我对所选用户的id进行操作:

params[:selected_users].each do |id,value|
  @user = User.find(id)
  @user.is_ignored = false #here is where the error is being thrown
  @user.save
end

我的一个朋友帮我弄明白了这一点,最终我从表格中获取身份证:

<td><%= check_box_tag "selected_users[#{ignored_user.id}]" %></td>
将我的代码更改为将第二个参数向下输送到do块中会拆分此哈希,并允许我对所选用户的id进行操作:

params[:selected_users].each do |id,value|
  @user = User.find(id)
  @user.is_ignored = false #here is where the error is being thrown
  @user.save
end


User
UserFacebookFriend
?-对我来说,这些似乎是不同的模式。您只将该列添加到了
User
User
UserFacebookFriend
?-对我来说,这些似乎是不同的模式。您只将该列添加到了
User

,我确实添加过几次,但应用程序的行为没有改变。我甚至用cports验证过,在重新启动之前,3000上没有任何进程在侦听,所有这些都没有效果。hmmm,您是否能够登录到数据库并查看该列是否存在于架构中?您能够填充rails控制台内部的字段吗?我在数据库中看到了该列,并且能够对其进行查询。试图从控制台访问它,但我一开始连访问用户模型都有困难。好的,是的,我在数据库中看到它,是的,我可以访问is_ignored字段,并在调试时从应用程序运行的同一环境中的rails控制台将一个值放入其中。尝试验证@user变量是否为nil确实是,多次但应用程序的行为没有改变。我甚至用cports验证过,在重新启动之前,3000上没有任何进程在侦听,所有这些都没有效果。hmmm,您是否能够登录到数据库并查看该列是否存在于架构中?您能够填充rails控制台内部的字段吗?我在数据库中看到了该列,并且能够对其进行查询。试图从控制台访问它,但我一开始连访问用户模型都有困难。好的,是的,我在数据库中看到它,是的,我可以访问is_ignored字段,并从rails控制台在调试应用程序时运行的同一环境中输入一个值。尝试验证@user变量不是nilOops!在发布到SO之前忘记将其更改为用户。修正了,哎呀!在发布到SO之前忘记将其更改为用户。已修复。实际的错误消息/堆栈跟踪是什么?另外-您确定已迁移到正确的环境吗?我实际上回答了以下问题;调试器显示,我正在向下输送到do块的id对象是一个哈希数组,我将其视为id数组…啊-好的。。。所以你可能应该接受你的答案,这样我们就知道问题已经解决了;)啊-对不起-我当时就这么做了;)实际的错误消息/堆栈跟踪是什么?另外-你确定你已经迁移到了正确的环境吗?我实际上回答了下面的问题;调试器显示,我正在向下输送到do块的id对象是一个哈希数组,我将其视为id数组…啊-好的。。。所以你可能应该接受你的答案,这样我们就知道问题已经解决了;)啊-对不起-我当时就这么做了;)
params[:selected_users].each do |id,value|
  @user = User.find(id)
  @user.is_ignored = false #here is where the error is being thrown
  @user.save
end