ruby-on-rails - 将我在多个模型中使用的自定义回调放在哪里

标签 ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 callback

假设我有两个具有相同回调的模型:

class Entry < ActiveRecord::Base
    belongs_to :patient
    validates :text, presence: true
    after_validation :normalizeDate

    def normalizeDate
      self.created_at = return_DateTime(self.created_at)
    end
end

class Post < ActiveRecord::Base
    after_validation :normalizeDate

    def normalizeDate
      self.created_at = return_DateTime(self.created_at)
    end
end

共享回调代码放在哪里?谢谢

 def normalizeDate
   self.created_at = return_DateTime(self.created_at)
 end

最佳答案

Marek 的回答很好,但 Rails 的方式是:

module NormalizeDateModule
  extend ActiveSupport::Concern

  included do
    after_validation :normalize_date
  end

  def normalize_date
    self.created_at = return_DateTime(created_at)
  end
end

Doc here .

(你有一个专门的文件夹:models/concerns)

关于ruby-on-rails - 将我在多个模型中使用的自定义回调放在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23559708/

相关文章:

ruby-on-rails - Resque,Resque 服务器,在 RedisToGo 上与 Heroku

ruby-on-rails - 从 Windows-1252 到 UTF-8 的转换中的 "\x9D"到 UTF-8

Ruby - 按值或按引用传递

ruby-on-rails - 带有 GET/POST 参数的 Rails redirect_to "www.somewebsite.com"?

ruby-on-rails - Rails 未定义方法 `id'

ruby-on-rails - Rails - strip_tags - 没有捕获 DOCTYPE?

ruby-on-rails - Rails has_many 通过不返回记录

ruby-on-rails - Carrierwave 文件上传在 ActiveRecord Create 上验证失败

ruby-on-rails - ThinkingSphinx使用RSpec,错误: "Failed to start searchd daemon."

ruby - Sinatra cookie 未按预期运行