如何使用ActiveRecord回调在保存之前分配字段值?

时间:2011-01-04 02:20:54

标签: activerecord callback ruby-on-rails-3 mongoid

我想知道如何使用回调为数据库字段赋值,这些字段是从虚拟属性字段中处理的。例如:

  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 个答案:

答案 0 :(得分:2)

你试过了吗?

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

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