Репликация объектной функции в различных файлах модели в Ruby on Rails - PullRequest
0 голосов
/ 21 мая 2010

Я хочу скопировать заданную функцию объекта в различные файлы модели

Как вы можете видеть ниже, 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

Было бы здорово, если бы вы могли предоставить код, чтобы помочь здесь - спасибо!

1 Ответ

1 голос
/ 21 мая 2010

вы можете создать такой модуль (предполагая, что 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

UPDATE

Но то, что я действительно сделал бы, выглядело бы так:

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
...