エンジニアリングにはほど遠い

iPhoneアプリとかサイトとかをつくっていくブログです。

Ruby

ActiveRecordで複数カラムに対し複数キーワードで探す

割と汎用的かと思ったので載せてみようかと。 orの引数にnilがきたらそのままなのがミソ。 class ActiveRecord::Base def self.search_with_multi(columns:, keywords:) where(columns_keywords_cond(columns, keywords)) end def self.columns_keywords_con…

Ruby 条件式で代入をした際のうっかり

ちょっとうっかりしたのでメモ。 変数に値を代入して、その値を判定した後に変数を使いたい場合 [1] pry(main)> if a = 1 > 0 [1] pry(main)* p a [1] pry(main)* end true => true [2] pry(main)> if (a = 1) > 0 [2] pry(main)* p a [2] pry(main)* end 1 …

Rubyのcaseを圧縮

whenの後の条件式のあとは改行しないとエラーになるのでどうしても行数が長くなる (追記: when A then B でいけます。基本的な事だけど知らなかった・・) case key when :foo 1 when :bar 2 else 3 end 条件が文字列かシンボルであれば下の様に書いてみてる…

Ruby Hashのkeyをsymbolに変換する

hashの中のarrayの中にもhashがあったときの事を考えて書きました。 config/initializers/hash.rb class Hash def keys_to_sym each_with_object({}) do |(k, v), hash| hash[k.to_sym] = v.respond_to?(:keys_to_sym) ? v.keys_to_sym : v end end end conf…

Rails インスタンスが持つインスタンス変数一覧をハッシュで取得

ActiveRecordのattributes的な。 instance_values でできるみたいです。(要ActiveSupport) [1] pry(main)> class Hoge [1] pry(main)* attr_accessor :a, :b, :c [1] pry(main)* end => nil [2] pry(main)> hoge = Hoge.new => #<Hoge:0x007fec4b2859d0> [3] pry(main)> hoge.instan</hoge:0x007fec4b2859d0>…

Ransackでグループ間OR検索が分からない件

Ransackは検索にとても便利なGemだけど、複雑な検索の仕方がイマイチ分からない。 ( * || * ) && ( * && * ) みたいな、グループ間がANDな検索しかできないのかな・・・? ( * && * ) || ( * && * ) みたいな事がしたいのだけど。。。 ちなみに前者の検索に…

Rubyアプリケーションプログラミング

12年前の本なのだけれど、立ち読みしてうおっと思って買った。 というのも、自分はwebアプリ作成についてRailsから入ったクチなので、Rails無しでwebアプリを作ってみたいと思ってたところだったから。 Pythonを勉強してみようと思ったけど、まだRubyも使い…