自定义ActsAsGeocodables错误消息

时间:2011-07-03 05:30:04

标签: ruby-on-rails ruby-on-rails-3

我在我的Rails 3应用程序模型中有以下代码。问题是这些错误消息没有出现在我的表单中。我知道错误消息部分是正确的,因为其他字段的其他错误正在显示。我做错了什么?

validates_as_geocodable :allow_nil => true do |geocode|

  if geocode.nil?
    model_instance.errors.add_to_base("Please specify a location")
    return false 
  end

  if geocode.precision >= :locality         
    model_instance.errors.add_to_base("Try to be more specific w/ your location")
    return false 
  end

end

1 个答案:

答案 0 :(得分:0)

如果你看https://github.com/collectiveidea/acts_as_geocodable/blob/rails3/lib/acts_as_geocodable.rb,你会看到

if !geocode ||
    (options[:precision] && geocode.precision < options[:precision]) ||
    (block_given? && yield(geocode) == false)
  model.errors.add :base, options[:message]
end

如果geocode.nil?,则永远不会调用yield(geocode) =&gt;你的块也不会被调用。不知道第二个条件,但我认为你也应该检查它。