2

WHERE AND正しい条件を書くのを誰が手伝ってくれますか? または、正しい場合、違いは何ですか?

1.

get_primary_status = Trustee.select(:id).where(:secret_key => seckey, :user_id => user_id, :primary_trustee => '1')

2.

get_primary_status = Trustee.select(:id).where(:secret_key => seckey).where(:user_id => user_id).where(:primary_trustee => '1')

3.

get_primary_status = Trustee.select(:id).where('secret_key = (?) AND user_id = (?) AND primary_trustee = (?)', seckey, user, '1')
4

3 に答える 3

5

これら 3 つのスニペットに違いはありません (3 番目のスニペットの列名があいまいになる可能性のある JOINS を使用しない場合)。

Railsコンソールでそれらを呼び出し、生成されたSQLコードを見ることで確認できます。

最初の方が読みやすいと思います。

于 2013-08-09T12:52:08.930 に答える
1

最初の1つ。

2 つ目: 条件を動的に追加する必要がない限り、「where」関数の連鎖は避けてください。

3 つ目: 生の SQL をホワイティングすることは、場合によっては良い考えかもしれません。しかし、プロトタイプに SQLite を使用し、本番環境に移行するために PostgreSQL を使用する場合はどうなるでしょうか? ええ、彼らは SQL 言語を標準として使用していますが、Arelはそれをうまく抽象化しています。

于 2013-08-09T12:56:57.207 に答える