P学習帳

書いておぼえるブログ

2018-07-11から1日間の記事一覧

【Ruby on Rails】安全に検索語を指定してレコードを取得したい

状況 Active RecordsのWhereに動的に文字列を渡してレコードを取得したい。クエリエラーになる文字列が含まれるかもしれないので、エスケープしてから渡さなければならない。 解決 inspectする。 エスケープが必要な文字をそれしてくれる。 コード lines.eac…

【Ruby】文字列からURLを抽出する

状況 平文に含まれるURLを抽出したい。関係ない文字は省きたい。 解決 URI.extractを使う。 コード require 'open-uri' urls = [] Articles.all.each do |article| urls << URI.extract(article, ["http", "https"]) End 雑感 これはとても便利なメソッドで…

【Ruby on Rails】DBからユニークなデータを配列で取りたい

状況 テーブルの任意のカラムから重複を省いた要素を配列で取り出したい。 解決 pluck()してcompact.uniqする。 コード ids = Music.where(is_favorite: true).pluck(:id).compact.uniq 雑感 あえてidを配列で取得してからActive Recordsに渡して絞りまなけ…

【Ruby】配列または文字列どちらも受け取れる関数を作りたい

状況 成り行きで関数に文字列と配列の両方が入ってくるコードができあがった。配列が来たらeachで回して要素を処理すればOK、と思っていたら引数が文字列の場合にエラーが出た。両方対応できるようにしたい。 解決 instance_of?(Array)を使って配列を判定す…

【Ruby】配列をずっと循環させる

状況 バッチ処理などで指定時間のあいだずっと配列をぐるぐるループしつづけていたい。 コード cycleをつかう。 ['apple', 'banana', 'orange', 'peach', 'grape', 'pineapple'].cycle do |fruit| p "I like #{fruit}" end cycle(3)のように回転数を指定する…