0

我有一个模块,其目的是作用于任何给定的ActiveRecord实例。

为了参数的缘故,假设此方法将字符串"match"与某些属性匹配到相同类型的另一个实例。

module Foo
  def check_against_other_instances
    self.all.each do |instance|
      if self.respond_to? :color && self.color == instance.color
        puts "match"
      end
    end
  end
end

但是,我不能只是简单地调用self.all这里,因为self是一个实例。我如何all从这里调用类方法?

4

3 回答 3

3

啊..在我问后几乎立即找到了解决方案...

self.class.all.each do |instance| ...

于 2012-07-03T18:23:40.667 回答
0

如果你想扩展 Rails 类的行为,那么你最好使用 ActiveSupport::Concern!

http://apidock.com/rails/ActiveSupport/Concern

于 2012-07-03T18:17:35.897 回答
0

您可以从实例中提取类的名称,然后对其进行量化。

例如,给定一个类Thing

t = Thing.new
t.class.name
  # => "Thing"
t.class.name.constantize
  # => Thing
于 2012-07-03T18:24:26.953 回答