私はwhere句複数の同一でかなり複雑なクエリに対処するために持っている同じ複数のリファクタリング:あなたは、レール&ActiveRecordの - 私はRailsの5</p> <p>によwhere句
::AllocatedBudget.joins(:account_code, :budget, account_code: [:place],
budget: [:fiscal_year, :budget_state])
.where(immeuble: { id: place.id })
.where(situation_budget: { codesituation: ['A', 'V']})
.where(plan_comptable: { supprime: 'false' })
.where(budget: { supprime: 'false'})
.where(situation_budget: { supprime: 'false' })
.where(budget_previsionnel: { supprime: 'false' })
.where(exercice_comptable: { supprime: 'false' })
ファースト私のモデルが醜い名前の古いデータベースに接続されていることを知っている必要があります。私はActiveRecordがクエリを実行するためにモデルの名前の代わりにカスタム名を必要としていることに気付きました。理由は分かりませんが、それだけで動作します...もし誰かがそれがいいと説明できたら)
私の実際の質問は、より良い方法で書くことができますか?同じ時間句 "supprime = 'false'"が非常に多くあります。
ありがとうございます! :)
さて、あなたのすべての 'where'メソッド条件を1つにマージすることができます。また、 '{supprime: 'false'}'を呼び出し前に定義された同じ値の変数に置き換えることもできます。 – potashin
@potashin節はどこですか?読むのが難しいですが、何か利点はありますか? – Matt
モデルでスコープを定義して、代わりにここで使用できます。 –