Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.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 - Fatal编程技术网

Ruby on rails 属性在生产中未更新

Ruby on rails 属性在生产中未更新,ruby-on-rails,ruby,Ruby On Rails,Ruby,Rails版本:4.2.3 我在这里遇到了一个奇怪的情况,我认为这是一件愚蠢的事情,但我不知道为什么会发生这种情况 我收到一个URL上的post通知,类似于/accounts/payment。在处理我收到的json之后,我需要对模型帐户的一个属性进行更新。我正在做这样的事情: account.update_columns(status: "delayed") 或更新属性 当地一切正常。所有测试都通过了。但由于未知原因,当此代码在生产环境中运行时,该属性不会更新 这里是生产环境中的一些日志 SQ

Rails版本:4.2.3

我在这里遇到了一个奇怪的情况,我认为这是一件愚蠢的事情,但我不知道为什么会发生这种情况

我收到一个URL上的post通知,类似于/accounts/payment。在处理我收到的json之后,我需要对模型帐户的一个属性进行更新。我正在做这样的事情:

account.update_columns(status: "delayed")
更新属性

当地一切正常。所有测试都通过了。但由于未知原因,当此代码在生产环境中运行时,该属性不会更新

这里是生产环境中的一些日志

SQL (1.7ms)  UPDATE "accounts" SET "status" = 'delayed' WHERE "accounts"."type" IN ('StandardAccount') AND "accounts"."id" = $1  [["id", 94]]


Account.find(94).status
  Account Load (0.7ms)  SELECT  "accounts".* FROM "accounts" WHERE "accounts"."id" = $1 LIMIT 1  [["id", 94]]
 => "actived"
提前谢谢

更新1 我的模式模式是:

StandardAccount < Account
standardcount
更新2
不是Rails的问题。我在accounts表中涉及的DB上发现了一个触发器,并导致了问题。

可能生产中id为94的帐户不是
StandardAccount
类型。在这两种环境中,
Account.find(94).type
返回给您的是什么?您好@MurifoX。两种环境中的类型相同
Account.find(94)。如果在生产控制台上运行
Account.update_列(状态:“延迟”)
,它是否返回一些
ActiveRecord
错误,或者是否更新
状态
?您的模型或验证中可能有某种筛选器失败。请检查
帐户的返回值。更新列(状态:“延迟”)
或使用
更新属性
如果记录未保存,则会引发异常。@在生产控制台上,一切正常。