2012-02-13 71 views
-1
class Anketum < ActiveRecord::Base 
    has_one :user 

    class << self 
    def search(params) 
     self.scope :h, :conditions => {:height => params[:height]} 
     #scope :w, :conditions => {:width => params[:width]} 
     self.h if params[:height] 
    end 

    end 
end 

我需要创建多个范围取决于PARAMS [:XXX]目前多个范围轨

回答

1

通过您的代码示例来看,你一路过来工程这样的:

# app/models/anketum.rb 
class Anketum < ActiveRecord::Base 
end 

# app/controller/some_controller.rb 
def search 
    @results = Anketum.scoped 
    [:width, :height, :any, :other, :searchable, :attribute].each do |key| 
    @results.where(key => params[key]) if params[key].present? 
    end 
end 

你顺便说一下,模型不应该访问params散列。

+0

原因不起作用......奇怪的'SELECT“anketa”。* FROM“anketa”' – 2012-02-13 17:07:15

+0

你的db表也称为“anketa”?如果不是,你的设置有些问题。 – coreyward 2012-02-13 18:21:26

+0

你在哪个Rails版本上?我假设你使用'scope'而不是'named_scope'。 – coreyward 2012-02-13 18:22:13