Active Record のプレースホルダー付き条件を知る

Active Record のプレースホルダー付き条件を知る:


前提

  • 生の SQL 文に引数として値を複数渡したいなと思った時に知ったメソッドです。


環境

  • Ruby On Rails 5.1.6
  • Ruby 2.4.4p296


TL;DR

以下のように、 ActiveRecord の where メソッドにおいて、SQL 文にシンボルで値を複数渡すことができます。これは、 where だけじゃなく、 find_by_sql メソッドでも使えることは確認できています。他のメソッドはどうなんだろう…。

Users.where("created_at >= :start and created_at <= :end", 
  {start: '2018-01-01', end: '2018-03-31'}) 
# "SELECT `users`.* FROM `users` WHERE `users`.`type` IN ('Users') AND (created_at >= '2018-01-01' and created_at <= '2018-03-31')" 
 
Users.find_by_sql(['select * from users where created_at between :start and :end', { start: '2018-01-01', end: '2018-03-31' }]) 
# select * from users where created_at between '2018-01-01' and '2018-03-31' 


参考文献

コメント

このブログの人気の投稿

投稿時間:2021-06-17 22:08:45 RSSフィード2021-06-17 22:00 分まとめ(2089件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)