![](/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.