我有一個小問題來了解應該在哪裏添加所有模型都可以訪問的方法。我讀過其他類似的帖子,但不清楚在哪裏添加它。他們中的一些人說將它作爲模塊添加到「/ lib」中,然後將它包含在模型類中(已經嘗試過,但沒有運氣)。那麼添加它的最佳做法是什麼?RoR - 適用於所有型號的全局方法
我想以下幾點:
我的模塊:/lib/search.rb
module Search
def self.search(params,columns_search)
srch = params[:search]
if srch.blank?
scoped
else
search= []
#Add conditions for the search
columns_search.map do |column|
search << (sanitize_sql_for_conditions ["LOWER(CAST(#{column} as TEXT)) LIKE ?", "%#{srch.downcase}%"])
end
where("(#{conditions.join(" and ")})")
end
end
在我的模型cars.rb
class Cars < ActiveRecord::Base
include Search
attr_accessible :name
end
但我的控制檯出現以下錯誤:
Started GET "/cars" for 127.0.0.1 at 2012-08-01 11:56:54 -0500
ActionController::RoutingError (uninitialized constant Car::Search): app/models/car.rb:2:in `'
任何幫助將不勝感激! :)
感謝您的回答,現在即時通訊以這種方式嘗試,但問題是,我得到了下一個錯誤:ActionController :: RoutingError(未初始化的常量Cars ::搜索)。我應該添加一條新路線,或者我應該錯過嗎? – 2012-08-01 17:01:19
我不確定爲什麼這是一個'RoutingError',但如果您在某處指的是Cars :: Search,那麼這是不正確的 - 您不需要調用在Search中定義的方法一個「汽車」對象。 – MrTheWalrus 2012-08-01 17:37:18