Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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 如何调试赢得';更新还是创建?_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 如何调试赢得';更新还是创建?

Ruby on rails 如何调试赢得';更新还是创建?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,救命啊,我已经破坏了我的Rails3用户模型 我首先注意到,我无法从应用程序本身更新用户 似乎我也无法从rails控制台中访问 User.save返回false User.create生成id=nil的记录,该记录不会保存到数据库中 我花了两天时间想弄清楚问题出在哪里。我已经拿出了我所有的CanCan并设计了验证。我已经把代码一行一行地看了一遍。我被难住了 日志中没有任何东西能告诉我一个明显的方向 我对User.rb上的所有内容都发表了评论,但没有任何乐趣 我知道这是一个非常模糊的问题,几乎不可

救命啊,我已经破坏了我的Rails3用户模型

我首先注意到,我无法从应用程序本身更新用户

似乎我也无法从rails控制台中访问

User.save
返回
false

User.create
生成id=nil的记录,该记录不会保存到数据库中

我花了两天时间想弄清楚问题出在哪里。我已经拿出了我所有的CanCan并设计了验证。我已经把代码一行一行地看了一遍。我被难住了

日志中没有任何东西能告诉我一个明显的方向

我对User.rb上的所有内容都发表了评论,但没有任何乐趣

我知道这是一个非常模糊的问题,几乎不可能从很远的地方回答

我希望有人能提出合理的步骤来解决这个问题,并试图弄清楚到底发生了什么

我对Rails还是相当陌生的,并且渴望了解它是如何工作的

谢谢你的想法

更新:

过去一周我一直在研究这个问题。最终,我从头开始开发了一个新的rails应用程序,并系统地将旧应用程序一块一块地移动到新应用程序中,以尝试找出问题所在

我已经找到了我的定制设计路线

routes.rb

devise_for :users,  :path_prefix => 'registration', :controllers => {:registrations => 'users/registrations'}
如果删除:controllers行,则可以使用designe用户编辑表单更新用户名

然而,这不是一个可行的解决办法。Deviate编辑表单只提供名称和电子邮件字段,但在我的用户模型中,用户需要访问其他几个列。因此需要定制路由

到目前为止,我一直在关注这个问题,但我还不确定该去哪里寻找。我尝试将注册控制器编辑为默认值,但没有成功。(我甚至直接从Desive git存储库中剪切粘贴代码)

所以我认为问题不在于控制器

这就离开了形式本身。该表单定义为

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put, :multipart => true }) do |f| %>
resource\u name,:url=>registration\u path(resource\u name),:html=>{:method=>:put,:multipart=>true})do | f |%>
我看不出这有什么问题。我想不出还有什么地方可以调试这个

总而言之,编辑表单按预期显示,用户可以编辑信息,单击更新,按预期重定向,不显示错误,但不保存编辑的信息。尾部显示未调用任何SQL存储

非常困惑,我很感激任何疯狂的想法或建议


非常感谢

尝试在控制台中调试:

require 'pp'
u = User.new
u.save
pp u.errors

这将为您提供阻止用户保存到数据库的错误。

请尝试在控制台中进行调试:

require 'pp'
u = User.new
u.save
pp u.errors

这会给你一些错误,这些错误会阻止用户被保存到数据库中。

我最终发现这是我的一个愚蠢的疏忽

在我的控制器里

resource.update_attributes!(params[:resource_name])
当我需要的是

resource.update_attributes!(params[resource_name])
我一定是在某个时候编辑的


这是一个自己造成的问题,花了两周的时间才解决

我最终发现这是我一个愚蠢的疏忽

在我的控制器里

resource.update_attributes!(params[:resource_name])
当我需要的是

resource.update_attributes!(params[resource_name])
我一定是在某个时候编辑的


这是一个自己造成的问题,花了两周的时间才解决

@wukerplank谢谢你的提示和(face plant!)如果我记得在禁用验证后重新启动rails控制台,我就不会有问题了!因此,事实证明,我可以在控制台中修改用户,但我不能在应用程序本身中修改用户。尾部日志显示已发布的更新数据,但未运行保存。知道我下一步该去哪里吗?@Andy Harvey要调试这个问题,请在控制器
@user.save中使用
@user.create这将在您的web浏览器中引发验证错误。@dombesz感谢您的建议。我正在使用.update\u属性。这也行吗?奇怪的是,我收到的唯一信息是“你成功地更新了你的帐户。”但记录肯定没有更新。我已经把一个尾巴的提取物摆在我面前了。我觉得在回形针行之前应该有一个SQL“save”。“但我可能有点不对劲吗?”安迪·哈维·迪瓦特(Andy Harvey Deviate)补充道,你的模型可以访问属性,因此只有某些属性可以更新,其余的被忽略。尝试定义更多属性可访问属性。是<代码>更新属性也应该可以。@dombesz谢谢你的帮助。对于POST中的所有变量,都明确定义了att_可访问性(请参见上面的POST bin链接)。我应该启用其他功能吗?如果其中一个属性不可访问,整个更新是否也会失败?还是仅此属性?我注意到,HTML5日期选择器将每个“DOB”日期元素作为一个单独的属性发布。我应该如何处理这些属性?是:dob足够了,还是我需要启用:dob(2i)等。谢谢helping@wukerplank感谢您的提示和(face plant!)如果我记得在禁用验证后重新启动rails控制台,我就不会有问题了!因此,事实证明,我可以在控制台中修改用户,但我不能在应用程序本身中修改用户。尾部日志显示已发布的更新数据,但未运行保存。知道我下一步该去哪里吗?@Andy Harvey要调试这个问题,请在控制器
@user.save中使用
@user.create这将在您的web浏览器中引发验证错误。@dombesz感谢您的建议。我正在使用.update\u属性。这也行吗?奇怪的是,我收到的唯一信息是“你成功地更新了你的帐户。”但记录肯定没有更新。我已经把一个尾巴的提取物摆在我面前了。我觉得在回形针行之前应该有一个SQL“save”。“但我可能有点不对劲吗?”安迪·哈维·迪瓦特(Andy Harvey Deviate)补充道,你的模型可以访问属性,因此只有某些属性可以更新,其余的被忽略。试着去做