【问题标题】:How to use ActiveRecord callbacks to assign field values before save?如何在保存前使用 ActiveRecord 回调来分配字段值?
【发布时间】:2011-01-04 02:20:53
【问题描述】:

我想知道如何使用回调将值分配给数据库字段,这些字段是从虚拟属性字段中处理出来的。示例:

  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' 用于 Building:0x0000010488f108

【问题讨论】:

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


    【解决方案1】:

    你试过了吗:

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

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

    【讨论】:

    • 第一种方法我没试过,但第二种方法有效。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2012-01-01
    • 2016-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    相关资源
    最近更新 更多