タグ

orに関するtakaesuのブックマーク (3)

  • Rails5 の or クエリがバグを誘発しそうで超怖い - モンモンブログ

    Rails5 になって ActiveRecord に or クエリが導入されました。早速、既存のコードを書き換えようとしたんですが、かなり慎重に使わないと結合順序のワナに嵌ってバグりそうで怖いです。 このような(間の抜けた)コードがあったとします。 Country. where(id: 1). where("id = ? OR id = ?", 1, 2). pluck(:id) 生成される SQL はこうで、 SELECT "countries"."id" FROM "countries" WHERE "countries"."id" = $1 AND (id = 1 OR id = 2) [["id", 1]] 実行結果はこう。 [ [0] 1 ] これを、or クエリを用いて素直に書き換えてみます。 Country. where(id: 1). where(id: 1).or(Cou

    Rails5 の or クエリがバグを誘発しそうで超怖い - モンモンブログ
  • tail -f pinzo.log: ArelでのOR検索ついでにごにょごにょいじってみた

    1つのキーワードで複数テーブルの複数カラムをあいまい検索ってよくある話ですね。 Arelを使って OR の LIKE 検索って冗長になりがちだけどそこそこパターン化出来そうだなーとつらつらとコード書いてみた。 実際は SimpleFinder までやると適用できるパターンが限定されるので、04_finally みたいなところが落とし所な気もする。 人によっては 03_inject_with_symbol ぐらいが一番可読性がいいって意見もありそう。 Arelを使って OR や LIKE をするメリットは scope にして merge した時に壊れないって記述をよく見ますが、こういう風に動的に対応箇所を増やせるように持っていくのも楽というのもメリットですね。文字列で where 内を書いていたらなかなかこうはできない あ、こんな処理を他にもたくさん書かなければいけない場合は

    takaesu
    takaesu 2015/12/09
    冗長化した処理をまとめるのが参考になる inject等を使って
  • Defined-or演算子「//」 - Perl入門ゼミ

    Perl › 演算子 › here Perl5.10からは、とても便利なDefined-or演算子「//」が導入されました。スラッシュが二つ続く演算子です。とっても検索しにくいので、早めに覚えておくのがいいと思います。近年の機能追加では、僕的には一番お勧めの機能ですね。 # Defined-or演算子 // Defined-or演算子は、左辺が定義されている場合は、左辺値を返却し、未定義の場合は右辺値を返すという動作をします。 # 右辺が代入される my $value = undef // 'default'; # 'default' # 左辺が代入される my $value = 0 // 'default'; # 0 my $value = '' // 'default'; # '' my $value = 'foo' // 'default'; # 'foo' これは、値が与えられなか

    Defined-or演算子「//」 - Perl入門ゼミ
  • 1