簡體   English   中英

用於在Ruby模塊或Rails應用程序中的類中運行查詢的單例對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM