タグ

ブックマーク / qiita.com/QUANON (6)

  • Rails 5 の or を色々試してみた - Qiita

    はじめに Rails 5 で ActiveRecord に待望の or メソッドが追加されましたね。これで where メソッドで SQL をベタ書きすることなく OR 演算子が使えます!ただ、where と or を組み合わせた場合、実際にどのような SQL が発行されるのかが気になったので検証してみました。 検証 前準備 以下の Model と seed データを用意します。

    Rails 5 の or を色々試してみた - Qiita
    kiyo_hiko
    kiyo_hiko 2017/03/13
    すごく楽になっててすばらしい
  • ある配列を任意の要素数の配列に分割したい - Qiita

    概要 ある配列を任意の長さ n ずつ分解したいです。 例えば、 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] を [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10]] にしたいということです。 簡単にできるんです。そう Enumerable#each_slice ならね。 array = (0..10).to_a #=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] array.each_slice(3).to_a #=> [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10]] require 'active_support/core_ext/array/grouping' array = (0..10).to_a #=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9

    ある配列を任意の要素数の配列に分割したい - Qiita
    kiyo_hiko
    kiyo_hiko 2016/05/25
    each_slice→to_aにすればよかった。なるほど
  • Hash から文字列でもシンボルでも値を取り出す - Qiita

    hash = { yuno: 'ゆの', miyako: '宮子' } hash[:yuno] #=> "ゆの" hash['yuno'] #=> nil hash = { 'sae' => '沙英', 'hiro' => 'ヒロ' } hash[:sae] #=> nil hash['sae'] #=> "沙英" きっちりしてて結構なんだけど、 key が文字列かシンボルか意識しなくても value を取り出せるとありがたい場合もありますよね。 そういえば、Rails 4 の Controller の params って文字列でもシンボルでも value を取り出せますよね。 あれの型は実は Hash ではなくて Hash のサブクラスである ActiveSupport::HashWithIndifferentAccess なんです! (正確には、さらにそのサブクラスである Action

    Hash から文字列でもシンボルでも値を取り出す - Qiita
    kiyo_hiko
    kiyo_hiko 2016/05/10
    かわいい
  • each_with_index の index 値を 0 以外から開始させたい - Qiita

    each_with_index で index の値を利用する時、 たとえば 0 ではなく 1 から使いたい場合… %w(杏子 さやか マミ).each_with_index {|magica, i| puts "#{i + 1} #{magica}" } # 1 杏子 # 2 さやか # 3 マミ とわざわざ +1 を書いたりするのはなんか面倒だ (´・ω・`) そんなときは Enumerator#with_index(offset = 0) の出番! 見ての通り、offset 値に任意の数値を指定できるのだ! Array#each をブロックなしで呼ぶと、Enumerator 型のオブジェクトが返ってくるので、 そいつに with_index を呼んでやる。 パッと見、each_with_index に見間違えそうなくらい、そっくりに書けるのが (個人的には) COOL♪

    each_with_index の index 値を 0 以外から開始させたい - Qiita
    kiyo_hiko
    kiyo_hiko 2015/12/24
    xs.each_with_index(offset)
  • Rails 4.2 で Arel を使って OR クエリを構築する - Qiita

    # Rails 4.1.10 scope1 = User.where(sex: 'male', age: 18) scope2 = User.where(sex: 'female', age: 16) # 条件ごとに括弧をつけるために Arel::FactoryMethods#grouping を使う。 condition1 = User.arel_table.grouping(scope1.where_values.reduce(:and)) condition2 = User.arel_table.grouping(scope2.where_values.reduce(:and)) User.where(condition1.or(condition2)).to_sql #=> "SELECT `users`.* FROM `users` WHERE ((`users`.`sex` =

    Rails 4.2 で Arel を使って OR クエリを構築する - Qiita
  • nil や false でも遅延初期化したい! - Qiita

    今 リファクタリング:Rubyエディション の輪読会をやっているんですが、 日こので知った小ネタをメモしておきます。 Ruby でインスタンス変数を遅延初期化するときには、 ||= というイディオムをよく使いますよね。 ここでの遅延初期化とは initialize (コンストラクタ) で事前にインスタンス変数を初期化しておくのではなく、 インスタンス変数に初めてアクセスする際に初期化することです。 class SoulGem def clearness @clearness ||= 100 end def get_polluted @clearness = clearness - 1 end end 初回のアクセスでインスタンス変数に値が代入され、以降のアクセスでは既に代入された値が返されます。 ただし代入された値が nil や false (すなわち偽) の場合は、毎回右辺の値が代入

    nil や false でも遅延初期化したい! - Qiita
    kiyo_hiko
    kiyo_hiko 2015/09/13
    Object#instance_variable_defined?
  • 1