【问题标题】:can I set Active Record callbacks for arbitrary model methods?我可以为任意模型方法设置 Active Record 回调吗?
【发布时间】:2012-06-19 17:38:08
【问题描述】:

我可以为任意模型方法设置 Active Record 回调吗?我可以看到这将如何有用,类似于控制器中的 before_filter。

有没有办法做到这一点?

【问题讨论】:

  • 你问这些回调是否存在?因为就是这样!他们是这样!这是他们的清单! api.rubyonrails.org/classes/ActiveRecord/Callbacks.html
  • 不,我问我是否可以为传统的 :save、:create 等方法设置回调。例如,我可能希望为 purchase.submit 方法设置之前/之后的回调...
  • 好吧,如果您拥有该方法(即您自己实现它),那么您可以将您的代码粘贴在那里。否则,您可能需要查找 Ruby Aliases。

标签: ruby-on-rails rails-activerecord


【解决方案1】:

Active Model Callbacks 为任何类提供了一个接口,以具有类似 Active Record 的回调。你可以在这里查看http://api.rubyonrails.org/classes/ActiveModel/Callbacks.html

这适用于模型中的任意方法。这是一个代码sn-p。

class MyModel
  extend ActiveModel::Callbacks
  define_model_callbacks :initialize, :only => :after

  after_initialize :update_info

  def initialize
    run_callbacks :initialize do
      # Your create action methods here
    end
  end

  def update_info
    puts 'info'
  end
end

这将在完成“initialize”方法后调用“update_info”方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 2013-01-25
    • 2021-03-05
    • 2011-02-18
    • 1970-01-01
    • 2016-08-29
    相关资源
    最近更新 更多