0

我希望在各种模型文件中复制给定的对象函数

正如您在下面看到的,我需要在模型中改变的两件事是

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 回答