[英]Ruby: invoke class methods in a module
我有一个模块,其目的是对任何给定的ActiveRecord
实例进行操作。
就参数而言,假设此方法将某些属性与另一个相同类型的实例"match"
则将字符串"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
从这里?
啊..我问后几乎就找到了解决方案...
self.class.all.each do |instance| ...
如果您想扩展rails类的行为,那么最好使用ActiveSupport :: Concern!
您可以从实例中提取类的名称,然后对其进行常量化。
例如,给定Thing
类:
t = Thing.new
t.class.name
# => "Thing"
t.class.name.constantize
# => Thing
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.