転職エージェントさんを使っているのだが、昨日の昼頃に明日の面接の予定を入れおった。
昨日の昼前に見知らぬ電話番号から着信があって私は出なかったんだけど、今思えばあれがエージェントさんの携帯番号だったのか。
気付くのが遅れて今日気付いたので、実質的には翌日の面接ですね。
渋谷の家にはスーツを含め、ジャケット等の堅めの服装は何もないのでSHIPSで上から下まで揃えました。TECHの教室があるフレーム神南坂の近くは服屋さんが多いので、出向いたついでに買えるから助かった。
ruby
.slice
指定したindex位置から文字数分の文字列を抜粋する。
lengthを省略すると1文字抜粋。
非破壊的。
.slice(index, length)
[]と同じ。
slice!
.sliceと異なり、index1から文字数分の文字列を削除する。
lengthを省略すると1文字削除。
破壊的メソッド。
.slice!(index, length)
model scope
クラスメソッドとして定義することもできる。
クラスメソッドとの大きな違いは、where(id: nil)という処理を投げた場合にもscopeの場合はallを返すのでメソッドチェインが繋げられる。
クラスメソッドでやった場合にはnilが返るのでそこでチェインが切れることになる。
railsの推奨としてはクラスメソッドであるが、チェインできるようなメソッドに限ってscopeに切り出す方が見分けやすい。
scope :price, -> (min, max) {
if min=="" && max==""
all
elsif min==""
where('price < ?', max.to_i)
elsif max==""
where('price > ?', min.to_i)
else
where('price between ? and ?', min.to_i, max.to_i)
end}
scope :search, -> (keyword){ where((["name LIKE ?"] * keyword.size).join(" AND "), *keyword.map{|w| "%#{w}%"}) }
複数キーワードでの検索
@keyword = params[:keyword].to_s.split(/[[:blank:]]+/)
文字列を全角・半角対応でスペース区切で配列へ変換
scope :search, -> (keyword){ where((["name LIKE ?"] * keyword.size).join(" AND "), *keyword.map{|w| "%#{w}%"}) }
scopeで配列数だけname LIKEを繰り返し、配列展開で列挙している。
pluck
摘むという意味。
インスタンスは取得せず、指定したカラムを配列で取得する。
メモリ効率が良い。ただし、実行の度にSQLが発行される。
Product.pluck(:name)
where
ハッシュも渡すことができる。
where (ActiveRecord::QueryMethods) - APIdock
active hash
アソシエーション
連携するカラム名はアクティブハッシュ名_idが要求されるので、保存するテーブルにはきちんと_idというrails流の外部キー名称を設定しなければならない。
コメント