Rails
リレーションするモデルも一気に保存したい、という場合の逆引きマニュアル的なもの 環境 $ bin/rails -v Rails 5.2.2 やり方 has_many の場合と has_one で書き方が違う has_manyの場合 {{has_manyをつけたモデルのインスタンス}}.{{belongs_toのモデル名の…
先日の代入記事の発展編 環境 rails (5.2.2) activesupport (= 5.2.2) presenceとは presenceメソッドは、present?がtrueの場合は自身のレシーバを返し、falseの場合はnilを返します。 - Active Support コア拡張機能 - Rails ガイド - presence 使い方 valu…
Railsで現在時間を扱うときは設定したタイムゾーンを意識してほしいので Time.zone.now を使う、というのは割と染みて覚えるが他のケースを忘れがちなので一覧的に書いてみる 環境 $ bin/rails -v Rails 5.2.2 逆引き利用シーン 利用シーン メソッド 例 現在…
5.0と5.2を行き来していたのでてっきりprivateだと思ってたのでメモ ネタ元 週刊Railsウォッチ(20180813)Rails 5.2.1リリース、sanitize_sql_arrayは5.2からpublicだった、Dev.toがRailsアプリのソースを公開ほか 書き方 5.2 ActiveRecord::Base.sanitize_…
深くは調べてないがトリビア的なメモ 環境 $ bin/rails -v Rails 5.2.2 実例 下記のように取れる場合 user = User.last # => #<User id: 15, name: "Sato", created_at: "2019-05-28 05:03:20", updated_at: "2019-05-27 05:03:20"> 下記のようにアクセスできる。 user[:name] #=> "Sato" user["name"] #=> "Sato" もちろん代入すると保存される user["name"] = </user>…
型が欲しい!!!とか思ったときそっと添えることのできる機能として 環境 $ bin/rails -v Rails 5.2.2 例 class NoRecordUser include ActiveModel::Model include ActiveModel::Attributes attribute :name, :string attribute :age, :integer attribute :…
自分のためのメモ 当該サイト Ruby on Rails API このサイトにあるものは API ドキュメント作成ガイドライン - Rails ガイド で紹介されているがRdocで生成されるドキュメントファイル。こちらもOSSとしてメンテナンスされているものである。 知ったきっかけ…
へー、こんな書き方ができるんだというメモ 環境 $ bin/rails -v Rails 5.2.2.1 やり方 ※Rails のルーティング - Rails ガイド より引用 routes.rbには以下のように書く Rails.application.routes.draw do get '*path', to: 'blacklist#index', constraints:…
いろいろあるけど項目ごとにざっと見れるやつってあまりないので書いてみる 環境 $ bin/rails -v Rails 5.2.2.1 種類 電話番号 1234567890.to_s(:phone) #=> "123-456-7890" (当たり前だけど)0始まりは数値だと許容しないからできない 0123456789.to_s(:phon…
RSpecでsampleするとコケるんだけど特定しづらい…みたいな奴を解消する。 環境 $ ruby -v ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin18] $ bin/rails --version Rails 5.2.2 $ bundle exec rspec --version RSpec 3.8 - rspec-core 3.8.0 - r…
APIモードで作らなかったので、異なるドメインからアクセスされるAPIをやるために Access-Control-Allow-Origin とか設定せねば…とか思ったらすんなりできたのでメモ 環境 $ bin/rails --version Rails 5.2.2.1 使うgem cyu/rack-cors: Rack Middleware for …
あれ、どうやるんだっけ?というときのメモ 環境 $ bin/rails --version Rails 5.2.2.1 例 例えばユーザID100が所持する本が欲しい場合、以下のURLが思いつく https://example.com/users/100/books みたいな場合 resources :users do get ":id/books" => "us…
ActiveRecordのDirty系小ネタ 環境 $ bin/rails -v Rails 5.2.2 使い方例 今回はUserにnameというカラムがあるという形の例で説明 ActiveRecordでオブジェクトを作る、この時点ではsaveされてないのでnil。 u = User.new(name:"Taro") #=> #<User id: nil, name: "Taro", created_at: nil, updated_at: nil> u.name # => "Ta</user>…
Rails Developers Meetup 2019 に行ってきたました、ので見れたものと理解できたものだけスライドとあわせて備忘的な感想メモです。 ※各発表のスライドは随時公式HPに上がってます 1日目 アプリケーションを作るときに考える25のこと スライド公開しました h…
特異な要望を頂いたのでRailsというフレームワーク的に対応しているかの実証実験メモ。 大前提 こんな実装はおすすめできないので、素直にHTMLを表示するだけならGETリクエストを使うようにしてください…。 環境 $ bin/rails -v Rails 5.2.2 検証 Controller…
Modelは複数形に、みたいな情報のベース定義。 環境 $ bin/rails -v Rails 5.2.2 前提 Railsの単数形、複数形、例外は登録することができる。 inflect.pluralは複数形への変換を定義 inflect.singularは単数形への変換を定義 inflect.irregularは単数形と複…
書き方よくわからんと思ったのでメモ 環境 $ bundle exec rspec --version RSpec 3.8 - rspec-core 3.8.0 - rspec-expectations 3.8.2 - rspec-mocks 3.8.0 - rspec-rails 3.8.1 - rspec-support 3.8.0 やり方 request specで expect(response).to redirect_…
俗に言うAnonymousControllerという手法です。 環境 $ bundle exec rspec --version RSpec 3.8 - rspec-core 3.8.0 - rspec-expectations 3.8.2 - rspec-mocks 3.8.0 - rspec-rails 3.8.1 - rspec-support 3.8.0 書き方 下記のようなconcernがあったとする m…
require忘れて時間を取られるみたいなことが多々あるので、.rspecを活用するときのメモ 環境 $ bundle exec rspec -v RSpec 3.8 - rspec-core 3.8.0 - rspec-expectations 3.8.2 - rspec-mocks 3.8.0 - rspec-rails 3.8.1 - rspec-support 3.8.0 使い方 設置…
意外とパターンすくないのでまとめてみた 記号別意味(パーセント/だいなり/しょうなりの表記は省略) <% %>(パーセントのみ) 出力が伴わないがRubyのコードとして操作したいときに使う。 if文で処理を分岐させる場合などに使う <% if @show_text == true …
他の人がやってくれていたアプリのみ触っていたので今後のためのメモ 環境 $ bin/rails -v Rails 5.2.2 やりたいこと ユーザログインを作る場合などに受け取ったパラメータをそのままパラメータとしてRailsログに書き出してしまうが、場合によってはRailsの…
どこで指定してんだろ、と思って調べてみたメモ 環境 $ bin/rails -v Rails 5.2.2 概要 rspecなどのテストにおいて、xxx_urlで生成されるurlのホスト名は www.example.com になる 例 たとえば自分のURLを生成してJSONとして返すコントローラーを作るとする c…
こんな書き方あるんだ的なメモ 環境 $ bin/rails -v Rails 5.2.2 やり方 今回使うモデル # == Schema Information # # Table name: users # # id :bigint(8) not null, primary key # name :string(255) # created_at :datetime not null # updated_at :date…
当たり前といえば当たり前なんだけど、冪等性保つ動きを期待しちゃう側面もあるのでメモ 環境 $ bin/rails -v Rails 5.2.2 概要 relationを行っているモデルに対して create_{{モデル名}} というメソッドを実行すると連動したレコードが作れるが実行するたび…
銀座Rails#4に行ってきたよメモです 各発表の感想 Rails アプリを個人開発からチーム開発に成長させる スライドは見つけたら貼ります、なおQiitaのアカウントはこちら 感想 一人で取り回していたサービスからチーム開発へ至るまでの経験談の話 before_action…
昔はできたが今はできない系 環境 $ bundle exec rails -v Rails 5.2.1 例 以下のようなenumがあるとする class User < ActiveRecord::Base enum sex: { not_known:0, male: 1, female: 2, not_applicable: 9 } #...(後略).... こんなときに『男性のときは1…
前回の応用編。 環境 webmock (3.4.2) 実例 想定する用件 "https://example.com/hogehoge" というURLのに { "id": 100 } のようなJSONを作り、idが100だったら成功するが、0を指定すると500エラーで落ちる。みたいなAPIを想定した場合 実際の設定 以下のよう…
WebMock入ってる環境でrspecを実行すると勝手に出てくるサンプル例に出てくるけど紹介 環境 webmock (3.4.2) 書き方 通常モックをさせる場合以下の感じで書くと思います。 stub_request(:post,"https://example.com/post_endpoint") .to_return(status: 200,…
小ネタ。 環境 $ bundle exec rails -v Rails 5.2.1 事例 paramsはそのままだと ActionController::Parameters なのでhashにまつわるクラスがつかえなかったりする # binding.pryなどした例 params # => <ActionController::Parameters {"contents"=>{"title"=>"hoge", "body"=>"huga"}, "controller"=>"</actioncontroller::parameters>…
普段は to_i してエポック秒比較しているのに、Time同士でもまぁいっかーとか思ったら降り掛かった厄災系メモ 環境 rails (5.2.0) 事象 end_of_** (end_of_dayやend_of_month)を使うと、対象の切り替わる手前の時刻を引き出してくれるが、その内容は小数点以…