Как использовать обратные вызовы ActiveRecord для назначения значений полей перед сохранением? - PullRequest
1 голос
/ 04 января 2011

Мне интересно, как я могу использовать обратные вызовы для назначения значений полям базы данных, которые обрабатываются из поля виртуального атрибута. Пример:

  field :houseno, :type => String
  field :street, :type => String

  attr_accessor :address

Моя попытка сделать это кажется неудачной. Вот что у меня есть:

  before_validation :assign_fields


  def assign_fields
    if @address
      @houseno = @address.match(/^(\d+-?(\d+)?)\W*(.*)/)[1]
      @street = @address.match(/^(\d+-?(\d+)?)\W*(.*)/)[3]
    end
  end

И я продолжаю получать эту ошибку:

неопределенный метод `houseno 'для здания: 0x0000010488f108

1 Ответ

2 голосов
/ 04 января 2011

Вы пробовали:

write_attribute(:houseno) = @address.match(/^(\d+-?(\d+)?)\W*(.*)/)[1]

или

self.houseno = @address.match(/^(\d+-?(\d+)?)\W*(.*)/)[1]

...