2016-06-29 4 views
1

私は、宝石の中にあるActive Recordのクエリを持っています。使用されるデータベースはポストグルです。Rails Active Record Where句を省略します。

Client.where(date:@date,client:@business_id) 

gemはget要求を使用してこのデータを取得します。 @business_idに値が多すぎると、URIが長すぎます。宝石には投稿要求はありません。

回避策:すべての@business_idがアプリに渡されるとき

ビジネス上の問題があります。すべてのclientの値をトリガーする「すべて」ボタンを表示させることができます。私は質問のclient:@business_id部分を無視する必要があります。

@business_idのすべてを渡す必要があるときに、クエリのclient:@business_id部分を無視するようにクエリを構成するにはどうすればよいですか?

答えて

2

鎖then節とは、条件付き含めるか@business_id一部を除外する:

relation = Client.where(date:@date) 
if your_conditional_is_true 
    relation = relation.where(client:@business_id) 
end 
the_clients = relation.all 

この動作理由は、実際ActiveRelationはなく、SQLの実行結果を返す場合ということです。 SQLは、関係の結果を処理するために何かを行うまで、構築され実行されません。

+0

これはすばらしい答えです。他のものにも役立ちます。 – HoosierCoder

関連する問題