0

特定のオブジェクト関数をさまざまなモデル ファイルに複製しようとしています

以下に示すように、モデル全体で変更する必要がある 2 つの点は次のとおりです。

1) 「guser」文字列 2) self.xxx

簡略化されたコード サンプル:

  def self.get_all
       statement="SELECT * FROM gusers WHERE"
       results = results + self.find_by_sql(["#{statement} #{statements[shard_id]}"])
       return results
  end

ここで役立つコードを提供していただければ幸いです - ありがとう!

4

1 に答える 1

1

このようなモジュールを作成できます(gusersが現在のモデルのテーブルであることを示唆しています)

module SharedFunctions
  def self.get_all
    statement = "SELECT * FROM #{self.table_name} WHERE"
    #... I don't understand what you wanne do here
  end
end

そしてあなたのモデルよりも:

class SomeModel < ActiveRecord::Base
  include SharedFunctions
end

更新

しかし、私が実際に行うことは次のようになります。

module SharedFunctions
  def self.get_all
    self.all :conditions => ...
  end
end

条件の詳細については、http://api.rubyonrails.org/classes/ActiveRecord/Base.htmlを参照してください。

または、スコープを使用することもできます。

class SomeModel < ActiveRecord::Base
  named_scope :get_all, :conditions => ...
end
于 2010-05-21T14:20:38.713 に答える