タグ

SQLとrailsに関するnyarugoのブックマーク (2)

  • Rails ModelのScope(スコープ)の使い方(scopeメソッドとdefault_scopeメソッド) - Rails Webook

    モデルのスコープ機能とは、共通的に使うクエリをモデルのメソッドのように定義できる機能です。 こうすることにより、複雑なSQLを何度も書かなくてよくなり、可読性と保守性を向上させることができます。 動作確認 Rails 4.1 目次 スコープ(Scope)の概要 スコープに引数を指定 スコープのマージ デフォルトスコープの設定 1. スコープ(Scope)の概要以下の2つの方法で「共通的に使うクエリをスコープ」として定義できます。 # 定義方法1: scopeメソッドで定義 class Post < ActiveRecord::Base scope :published, -> { where(published: true) } end # 定義方法2: クラスメソッドのように定義 class Post < ActiveRecord::Base def self.published whe

    Rails ModelのScope(スコープ)の使い方(scopeメソッドとdefault_scopeメソッド) - Rails Webook
  • Rails4.2でlike句のサニタイズをする - hotoolong's blog

    2016年はじまってもう2月になってしまいました。 遅ればせながら、あけましておめでとうございます。 昨年から相当ハードなスケジュールでなかなかブログが書けてないですが、 今年はもう少し書く時間を確保したいところ。 頑張ります。。 今日のお題は SQLでLike句を使う場合に RailsでActiveRecordを使ってwhere句 Hogehoge.where('name LIKE ?', "%#{args[:name]}%") の様な書き方をするケース もしくはscopeでArelに設定して scope :by_name, ->(name) { where(arel_table[:name].matches("%#{name}%")) } の様な書き方もよく見かけますが、 like句に対してサニタイズするのを忘れてしまうこともあります。 Rails4.2からサニタイズするメソッドが利用

    Rails4.2でlike句のサニタイズをする - hotoolong's blog
  • 1