Как создать метод для использования "_changed?"на комбинированных полях - PullRequest
2 голосов
/ 22 декабря 2011

Предположим, у меня есть метод, который объединяет несколько полей адреса, например:

def address
    "#{street_address}, #{city}, #{state}, #{postal_code}, #{country}"
end

Как бы я расширил метод, чтобы можно было проверить, изменилось ли какое-либо из полей?По сути, я хотел бы иметь возможность сделать следующее:

after_validation :geocode, :if => :address.changed?

Моя модель выглядит следующим образом:

class Place < ActiveRecord::Base

  attr_accessible :street_address, :city, :state, :postal_code, :country, :latitude, :longitude, :geocode_type
  geocoded_by :address

  after_validation :geocode#, :if => :address.changed?

  def address
    "#{street_address}, #{city}, #{state}, #{postal_code}, #{country}"
  end
end

Или есть лучший способ сделать это все вместе?

Ответы [ 2 ]

6 голосов
/ 22 декабря 2011
def address_changed?
  attrs = %w(street_address city state postal_code country)
  attrs.any?{|a| send "#{a}_changed?"}
end
2 голосов
/ 22 декабря 2011

Немного неуклюжий ...

def address_changed?
  street_address_changed? || city_changed? || state_changed? || postal_code_changed? || country_changed?
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...