我有几个跨多个表的聚合函数。目前,我将它们作为类方法放在其中一个类中,但是我们真的希望将它们放在一个中央模块或类中,因为它们并不是特定于类,我们现在将它们放在多个类中。我只是想把它们放在一个模块中但不能扩展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中获取的类只是为了获得查询接口而没有其他功能或其他想法如何处理这个?
答案 0 :(得分:0)
您不希望创建一个继承自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