将模块混合到轨道上的红宝石模型中

时间:2011-07-26 03:22:04

标签: ruby-on-rails activerecord

我希望将几个模型共享的功能抽象为模块。

我有这个型号:

class Report < ActiveRecord::Base
  include AppModel
  has_and_belongs_to_many :tag
  belongs_to :city
  belongs_to :user
end

(另外,如何让我的代码在stackoverflow上跨越多行?它不会保留我的换行符。)

然后我有一个模块(在app / models / app_model.rb中):

module AppModel 
  def self.list
    find(:all, :order => 'name asc').map { |item| [item.name, item.id] }
   end
end

但如果我Report.list它不起作用。我怀疑如果我在def functiondef self.function模块中存在问题?

所以我的问题是,如何使模块中定义的Report.listReport.find_tagged等函数可访问。

1 个答案:

答案 0 :(得分:5)

包含混合实例方法,而不是类级别。使用扩展方法或orverride 包含

P.S。在SO上使用代码格式使用 {}