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

インスタンスからクラスの名前を取得して、それを定数化できます。

たとえば、クラスが与えられた場合Thing:

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

Rails クラスの動作を拡張したい場合は、ActiveSupport::Concern を使用するのが最善です。

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

于 2012-07-03T18:17:35.897 に答える