PIYO - Tech & Life -

Rails

PostgresSQL+ActiveRecordのwhereで大文字小文字を無視

SQLのlower Model.where("lower(name) like ?", "%john%").to_sql # SELECT \"models\".* FROM \"models\" WHERE (lower(name) like '%john%') SQLのILIKE PosgreSQLではILIKEが使える。 Model.where("name ilike ?", "%john%").to_sql # SELECT \"models\".* FROM \"models\" WHERE (name ilike '%john%') arelを使う t = Model.arel_table Model.where(t[:name].matches("%john%")).to_sql # SELECT \"models\".* FROM \"models\" WHERE (\"models\".\"name\" ILIKE '%john%')" matchesがILIKEを使

RailsのRakeタスクが定義される順番

Railsで使うRakeタスクは大きくわけて3種類あり、普通はこの順番で定義されることになっている。 gemのタスク アプリケーション固有のタスク Railsのタスク まずソースコードを読んでみた。 Rakefile # Rakefile require File.expand_path('../config/application',

routes.rbでresourcesを使ったときのパラメータをid以外にする

Railsではhas_manyな関連を持つモデルに対してRESTなルートを簡単に定義できる。 # routes.rb resources :blogs, only: [:index] resources :posts, only: [:index] end このようなルートが定義される。 % rake routes Prefix Verb URI Pattern Controller#Action blog_posts GET /blogs/:blog_id/posts(.:format) posts#index blogs GET /blogs(.:format) blogs#index このときのパラメータであ

Rails x PostgreSQL dbseed用sqlを作る

今日から文体を常体にする。 データベースに最初からデータを入れておきたい場合、Railsではrake db:seedを使う。このタスクによりRailsアプリケーションがロードされた状態でdb/seeds.

RailsのDBマイグレーションでカラムを変更する

あとからデフォルト値を変えたり、Nullableをやめたりってときのやりかたを忘れがちなのでメモ。 class MigrationName < ActiveRecord::Migration def change change_column :models, :column_name, :integer, null:false, default:0 end end こんな感じです。 change_column :モデル複数形, :属性, :型, {オプション}

Grapeを使ったAPI実装でのネストやパラメータ

Grapeをもう少し使ってみました。関連記事は↓ RailsのGrapeとJbuilderでAPI開発 - ぴよログ 基本形 # app/api/api.rb resource :items do get '/', jbuilder:'items' do @items = Item.all end end パラメータを受け取る 全てのItemではなく、idに該当す

RailsのRakeタスクを上書き・再定義するには

既存のRakeタスクと同名のRakeタスクを定義した場合、上書きではなく連続実行になります。確か。 Railsでフレームワーク側で定義されているRakeタスクが30ほどありますが、それに含まれるタスクを

RailsのGrapeとJbuilderでAPI開発

RailsでAPIを作るならGrapeを使うってのが定番っぽいので使ってみました。 参考にしたのはこのへん intridea/grape Ruby - RailsとGrapeで行う最高のWeb API開発 - Qiita Grapeの導入〜Hello World インス

Rubyのダミーデータ生成gem

Railsアプリケーションの作り始めってローカルのデータベースにデータが全然なくて何かと作りづらいってことありませんか?データがないとページネーション書けないし、なんか雰囲気出ないし、、、みたいな。 R