rails
自己結合 自己テーブルを参照する関連も作ることができる class AddColumnToPosts < ActiveRecord::Migration[6.0] def change add_reference :posts, :prev_post add_reference :posts, :next_post end end class Post < ApplicationRecord belongs_to :cat…
Association extensions # Post::ActiveRecord_Associations_CollectionProxy に hoge メソッドを生やす. # 当然メソッド内でのselfはPst::ActiveRecord_Associations_CollectionProxyで posts が入っている。 # CollectionProxyに生えているので 当然 Post.…
設定 .pryrcに以下を追記する。RubyMineのCUIコマンドがない場合は Tools > Create Command-line Launcher... で作っておく。 Pry.config.editor = proc { |file, line| "/usr/local/bin/mine --line #{line} #{file}" } Pry.commands.alias_command 'mine',…
ARのjoinまわりのメソッドを勉強した。N+1を解消するのにとても便利。 joins アソシエーションをキャッシュしない アソシエーションを検索条件でだけつかいたいときに有効 内部的には普通にjoinしてる preload アソシエーションをキャッシュする 必要なテー…
よくググるのでメモ scope :available, -> { where('deleted = false') } scope :available, -> { receivable.opened.showable } # 引数あり scope :find_by_friend_ids, -> friend_ids { where( target_id: friend_ids ) }
定義 class Log < ActiveRecord::Base enum reason: { login: 0, purchase: 1, finish_game: 2 } end 呼び出し 以下のように書いておくと、後から変更が必要になった時にわかりやすい pry(main)> Log::reasons[:login] => 0 全部欲しい場合 pry(main)> Log::…
ActiveSupport の Array の拡張メソッドを一通り眺めてみた extract_options! 引数のオプション部分だけをかえしてくれる. メソッドを定義するときに便利 def options(*args) args.extract_options! end options(1, 2) # => {} options(1, 2, a: :b) # => {:…
プロジェクトで使っている bundler で入れたgemの調査をするためのコマンドをbashで書いた。 Ruby 書くときは atom がメインエディタになりつつある。 RubyMineは重いので、コードリーディングの時だけ使っている。 ### bundler でインストールした gem を編…
ページネーションがあるAPIを作るとき毎回書くのが大変なので共通化した。 base_controller.rb に書いておくと、他のコントローラから使い回せて便利。 def params_page params[:page].try(:to_i).presence || 1 end def params_site_ids params["site_ids"].tr…
今 Rails Guides の ActiveRecordのところを読んでいる。 Hashで range を指定することで, between 句が書ける事を知った。 Client.where(:created_at => (Time.now.midnight - 1.day)..Time.now.midnight)
今日はこのIssueを読んでみた ActionController::Parameters#== does not works as expected · Issue #21032 · rails/rails · GitHub hash = { foo: :bar } params = ActionController::Parameters.new(hash) params == hash #returns false あるHashから生…
rails admin だと json形式でエクスポートできるけど, インポートはできない. s = File.read("./site.json", :encoding => Encoding::UTF_8) JSON.parse( s ).each { |elem| s = Site.new(elem); s.save }
deploy時にマイグレーションもする. $ be cap deploy:migrations これをやらないと unicorn の restart が必要になってしまうので DBスキーマ更新するときはやった方が良い.
Rails コンソールで memcached とかのキャッシュをクリアする方法 ActionController::Base.cache_store.clear ではなくて Rails.cache.clear をつかう. どっちでもクリアできるけど, 前者を使ってしまうとすごく遅い.
FactoryGirl.build(:user) : オブジェクト生成のみ. DBに保存しない. FactoryGirl.create(:user) : オブジェクトを生成し, かつDBに保存する. 参考 http://o.inchiki.jp/obbr/159#toc_8 http://blog.livedoor.jp/sasata299/archives/51931175.html
カスタムロガーを作ってそこに出力する 以下の方法で専用のログファイルを作成し、そこに出力させることができる configの production.rb に追記 config.hoge_logger = Logger.new( 'log/hoge.log', 'daily' ) ログをとりたい部分に追記する。 タイムスタンプ…
1.9.1 :052 > Post.where('name like "%hoge%"') こっちでもよい 1.9.1 :008 > User.where('user_name like ?', "%hoge%" )
rails runner (one liner) で無理やり条件分岐 spring rails runner "if true; p 'true'; else; p 'false' end;" セミコロンをつけていくだけだが、なかなか苦しい。(汗 ruby script の場合は -e が必要 ruby -e " if true; p 4; else; p 3 end;"
In ruby on rails read_attribute and write_attribute can use both symbol and string as arguments.If you use attributes method you can use only string as argument.via: http://blog.eiel.info/blog/2012/12/17/read-attribute-activerecord/
こんなエラー Could not find a JavaScript runtime . See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)node.js入れて, therubyracerと execjsをGemfileから消して bundle updateしたら治りまし…
viewでcontent_forメソッドを使用すればよい。multi_layout.html.erb (layout) <%= yield :extend_menu %> <%= yield %> <%= yield 'extend_menu' %>multi.html.erb (view) 文字列とシンボルは区別される。 <% content_for :extend_menu do %> header <% end…
ブロック引数 なのに、インデントができていないこと が原因 以下の例で発生する。 = form_for @book do |f| # ブロック引数 -# この行でインデントなし以下のエラーが全て発生する。 syntax error, unexpected ')' unterminated string meets end of filesy…
いわゆる Railsの基本理念の1つ CoC (Convention over Configuration, 設定より規約) の規約部分です。Railsではファイル名、クラス名などを規約通りに書かないと動きません。(そして rails vim でも Rcontroller book とかやって怒られる。ただしくは Rcont…
Rails で AbstractController::DoubleRenderError が出た時の対処法。 2回render しちゃってるので、 and return をつけて、終了させる。 redirect_to(...) and returnエラーメッセージに書いてあります。親切。
string 文字列型。 text テキスト(不定長文字列)型。 integer 整数型。 float 浮動小数点数型。 decimal 固定長整数型。 datetime 日時型。 timestamp タイムスタンプ型。 time 時刻型。 date 日付型。 binary バイナリ文字列型。 boolean 真偽値型。 refe…
マイグレーション Wordモデルに Group IDカラムを追加する #rails g migration AddGroupToWord group_id:integer スネーク記法でもおk #rails g migration add_hoge_to_word hoge:string モデルからカラムを削除する。 # rails g migration remove_hoge_fro…
Rails.root アプリケーションルートディレクトリのパス Rails.env RAILS_ENV="hoge"で起動時に指定した環境変数
:R controller と view の入れ替え gf カーソル位置のモデルに飛ぶ :bn 前のバッファに戻る。gfで飛んでから戻るとき使う。 以下の機能は、Rmodel で補完ができます。 model名などは単数形、複数形は区別されます。 Rmodel model名 modelに飛ぶ Rcontroller …
情報表示 rake -T rake タスク一覧を表示 rake db:version 現在のDBバージョンを表示 (例. Current version: 20120611044441) rake db:charset DBの文字コード表示 rake db:collation DBの照合順序を表示 migration1 rake db:create database.yml の内容でデ…
rails勉強会に参加するために、railsを触っていた。 rake db:migrate後以下のエラーが発生した。 $ rake db:migrate rake aborted! No migration with version number 3Tasks: TOP => db:migrate (See full trace by running task with --trace) どうやら、…