【发布时间】:2019-09-30 18:08:39
【问题描述】:
我有一个在活动记录中被继承的模块。
在那个模块中 我正在调用一个从外部源获取 id 然后更新记录的函数 我得到更新结果 = true 但记录不会保存更新
# This is shared between multiple instances of classes
module External
def get_external_id
external_client_id = ExternalClient::get_id(self)
# it used to be
# self.update_attributes(external_client_id:external_client_id, external_id_updated_date: Time.now)
self.external_client_id = external_client_id
self.external_id_updated_date = Time.now
self.save
end
end
class InfomrationForm < ActiveRecord::Base
include External
end
当我尝试使用
self.external_client_id
我得到空
当我应该从外部服务获取随机 UUID 时。
我检查了整个功能
该服务返回一个正确的 ID,我可以记录它
保存返回true,我可以记录,但是当我尝试使用
问题是我的一个验证在没有提出问题的情况下默默地失败了。
我必须评论所有验证,然后一一返回,以确定哪个验证失败。
【问题讨论】:
-
如果你在 self.save 后面添加一个 bang(!) 那么它会给你一个更好的错误信息,这样你就可以看到发生了什么。
-
除了上面的注释,你可以使用
self.valid?或self.persisted?来检查是否保存,如果没有保存则打印self.errors。 -
我已经这样做了,但是保存仍然返回true,这意味着记录已成功更新但没有成功。
-
这可能需要您展示更多代码才能弄清楚。
-
你确定表backing
InformationalForm有external_client_id方法吗?愚蠢的问题,但值得检查
标签: ruby-on-rails ruby-on-rails-5