扩展model.save方法Rails

时间:2011-07-21 01:23:00

标签: ruby-on-rails

我可以使用某些activeRecord模型的.save方法并为其添加功能吗?我还想使用该函数中保存的项目的一些属性

我能做点什么吗?

class Item < ActiveRecord::Base
    def self.save
        <added stuff for save>
        <including some_other_id_from_this_item>
    end
end

还是会破坏事情?我如何实际访问this_item.the_column_i_need?

2 个答案:

答案 0 :(得分:5)

您应该使用ActiveRecords callbacks来扩展保存行为。

使用before_save挂钩,您可以在保存记录之前访问数据,例如更改输入电子邮件的情况,您可以执行类似

的操作
class User < ActiveRecord::Base
  before_save :downcase_email

  def downcase_email
    email.downcase!
  end
end

答案 1 :(得分:0)

使用回调 aftet_save 代替。如果您阅读,则只需属性名称即可访问任何列;如果需要更改 self.db_column_name ,则可以访问