![](/img/trans.png)
[英]Ruby on Rails: Reference to a singleton class action in routes
[英]singleton object to run query with in a Ruby module or class in a Rails app
我有几个跨多个表的聚合函数。 目前,我将它们作为一个类中的类方法使用,但由于它们并不是特定于该类的,因此我们真的希望将它们放在一个中央模块或类中,并且现在将它们包含在多个类中。 我当时只是想将它们放在模块中,但不能扩展ActiveRecord :: Base。 像这样的事情,但是由于没有用于global_aggregations的表,因此无法正常工作:
class GlobalAggregation < ActiveRecord::Base
def self.say_hello
puts "say hello"
sql="select * from locations" # this would join a bunch of tables
items=self.find_by_sql(sql)
end
end
有没有一种方法可以设置一个从ActiveRecord :: Base派生的类,而只是在没有其他功能或如何解决此问题的其他想法的情况下进入查询接口?
您不想创建一个从ActiveRecord::Base
继承的类,因为从该类继承的类按照定义应该是AR模型。 您不希望猴子修补ActiveRecord::Base
,因为这不是应用于所有模型的Base
功能。 您可以从另一个模块内部调用Base
方法:
module GlobalAggregator
def say_hello
puts "say hello"
sql = "select * from locations" # this would join a bunch of tables
items = ActiveRecord::Base.find_by_sql(sql)
end
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.