【发布时间】:2016-06-03 09:07:31
【问题描述】:
以下geocodes(获取地址的坐标)在我创建或更新时自动进行。这是在我的位置模型中
def full_address
full_address = "#{address},#{city},#{state}"
end
geocoded_by :full_address
after_validation :geocode, :if => :address_changed?
但如果我将 coords_locked 设置为 true,我不希望完成地理编码。
我不知道该怎么做。我试过了
geocoded_by :full_address
after_validation :geocode, :if => { :coords_locked == false || :address_changed? }
什么是正确的语法,或者我要解决这一切都错了。谢谢
附言。刚刚意识到我可能不需要full_address =。
【问题讨论】:
-
此外,如果您尝试按照您的要求执行此操作:after_validation :geocode, :if => !coords_locked || :address_changed?
-
我让自己陷入双重否定,但如果 :coords_locked 为假,我确实想要设置坐标。如果
coords_locked是true,这意味着我不希望进行更改。但更重要的是,如果没有冒号的语法!coords_locked效果很好,因为我想我尝试了!:并得到了错误。我会试试这个然后回来。 -
after_validation :geocode, :if => !:coords_locked && :address_changed?无论:coords_locked是true还是falseundefined method `after_validation' for false: FalseClass def update respond_to do |format| 的结果如下if @location.update(location_params) # 如果更新成功,重定向到展示页面 format.html { redirect_to @location, notice: '地址更新成功。' } format.json { render :show, status: :ok, location: @location } 这是股票控制器语言。 -
该!负数不起作用,所以为了测试我尝试了
after_validation :geocode, :if => :coords_locked? && :address_changed?并且没有错误地运行。除了它改变了coords_locked是true还是false的坐标。
标签: ruby-on-rails activerecord conditional