2011-02-04 15 views
1

Rails 2.0.2の条件に基づいて検索を制限することを検討してください。Rails:条件付きfind_by_contents; syntax help please

検索声明:

@employees = Employee.find_by_contents(params[:keywords].to_s, :include => [ :categories, :revisions, :approvals, :archives, :related_documents ]) 

これは構文がどうあるべきか

@employees = Employee.find_by_contents(params[:keywords].to_s, :include => [ :categories, :revisions, :approvals, :archives, :related_documents ], :conditions=>["archived = '0'"]) 

誰もが知っている動作しませんが

:conditions=>["archived = '0'"] 

を見つけ制限する条件を追加する必要がありますか?

+0

だから例外はありますか?どちらのエラー? – fl00r

+0

どのようなタイプの 'archived'フィールドですか?本当に 'Strig'?または 'ブール'? – fl00r

+0

エラーはありません。条件文を無視しました。ブール値。 – Jeffrey

答えて

0

を試すには、find_byフェレットするための条件を追加することで、かなりの時間を持っていたので、私はそれがアーカイブされます場合はフィルタリングするためにポストコマンドを追加しました。あなたがまだ良い方法を考えているなら、私に知らせてください。ありがとう。

@employees = Employee.find_by_contents(params[:keywords].to_s, 
       :include => [ :categories, :revisions, :approvals, 
          :archives, :related_documents ]) 
@employees = @employees.find_all {|p| !p.archived} 
+0

あなたはARだけを使うことができるので、悪い解決策です – fl00r

0

条件を配列に渡すと、パラメータ化された条件にする必要があると思います。 /以下のいずれかの両方試してみてください:まず

@employees = Employee.find_by_contents(params[:keywords].to_s, 
        :include => [ :categories, :revisions, :approvals, 
           :archives, :related_documents ], 
        :conditions=> "archived = '0'") 

または

@employees = Employee.find_by_contents(params[:keywords].to_s,       
        :include => [ :categories, :revisions, :approvals, 
           :archives, :related_documents ], 
        :conditions=>["archived = ?",'0']) 
+0

どちらも結果の制限に成功しませんでした。 – Jeffrey

0

を、あなたはどのようなエラーがありますか?

そしてこの

@employees = Employee.find_by_contents(params[:keywords].to_s, :include => [ :categories, :revisions, :approvals, :archives, :related_documents ], :conditions=>["employees.archived = ?", false]) 
+0

エラーはありません。あたかもそこになかったかのように条件文を無視するだけです。 – Jeffrey

+0

更新を参照してください。 ':conditions => [" employees.archived =? "、false]' – fl00r