【问题标题】:Method not defined in model?模型中未定义方法?
【发布时间】:2013-10-20 23:21:46
【问题描述】:

我的模型中有未定义的方法,但我相信我有它。

class Business < ActiveRecord::Base
  attr_accessible :user_id, :name, :city, :state, :zip, :street, :latitude, :longitude

  def new_address
    [street, city, state, zip].join(', ')
  end  
  geocoded_by :new_address
  after_validation :geocode, :if => :new_address_changed?

end

我在new_address_changed? 上收到未定义的方法错误,这是错误的吗?

【问题讨论】:

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


    【解决方案1】:

    你可以自己定义method,因为new_address不是active_record属性:

    def new_address_changed?
      street_changed? || city_changed? || state_changed? || zip_changed?
    end
    

    【讨论】:

      【解决方案2】:

      *_changed? 方法仅适用于活动记录属性,不适用于用户定义的方法。对你来说,street_changed? 等会起作用。

      最好的办法是定义另一个方法,像这样:

      def address_changed?
        street_changed? || city_changed? || state_changed? || zip_changed?
      end
      

      【讨论】:

      • 哦,如果new_address 发生变化,还有什么选择?
      • 好吧,您必须自己定义address_changed? 方法,并检查其中的各个字段更改。
      猜你喜欢
      • 1970-01-01
      • 2020-04-04
      • 2016-11-04
      • 2018-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-13
      相关资源
      最近更新 更多