【问题标题】:Know if validation was already called [closed]知道是否已经调用了验证[关闭]
【发布时间】:2014-02-19 03:50:53
【问题描述】:

如何知道模型是否已经过验证?

u = User.new
u.name = "Ralph"
u.valid? # => true
u.validated? # => false

我想防止对地理编码的查询过多。

【问题讨论】:

  • 在什么情况下跳过?跳过是什么意思?你在地理编码什么?你能发布你的user.rb吗?
  • 如果只是做u.save,它只会验证一次,如果无效则返回false
  • 减三很重...我想知道这个模型是否已经“验证”。它不应该再次进入验证过程。例如,每当我的模型得到验证时,before_validation :geocode 都会被点击。但我只想打他们一次以保存我的谷歌查找队伍。所以我认为有一个“验证?”方法来告诉我验证过程是否已经完成。我希望现在更清楚了。

标签: ruby-on-rails mongoid3


【解决方案1】:

如果您有 before_validation :geocode 回调,您可以改进您的 geocode 方法以通过这种方式缓存大量代码结果:

def geocode
  @geocode_results ||= {}
  # suppose geocoding depends on `lat_lon` attribute
  @geocode_results[lat_lon] ||= begin
    # Your heavy code here
  end
end

缓存为哈希值允许在 lat_lon 更改时重做地理编码。

【讨论】:

    猜你喜欢
    • 2022-06-16
    • 1970-01-01
    • 2015-07-19
    • 2018-12-05
    • 2020-09-25
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    相关资源
    最近更新 更多