2021-09-01から1日間の記事一覧

フラッシュメッセージ

Railsで用意されているflashオブジェクトはハッシュ形式で、メッセージタイプがキー、メッセージが値である。ビューでは以下の形で表示できる。 <% flash.each do |message_type, message| %> <div class="alert alert-<%= message_type %>"><%= message %></div> <% end %> add_flash_type add_flash_typesでBo…

rails-i18nによる国際化

rails-i18n 一般的なメッセージについての日本語での国際化設定ファイル(以下)を参照するようにできる。 rails-i18n/ja.yml at master · svenfuchs/rails-i18n · GitHub インストール gem 'rails-i18n' 設定 config/application.rb class Application < Ra…

モデルのバリデーションだけでなくデータベースでもカラム制約をかける理由

データベース側の制約がないと、SQLを実行したり、直接データを操作したときにモデルで禁止した不整合なデータができる可能性がある。 不整合なデータはアプリの不具合やエラーの原因となりかねないので、アプリケーションからモデルを経由してデータを作成…

sorcery

sorcery https://github.com/Sorcery/sorcery/wiki インストール gem 'sorcery' % bundle install Userモデルの自動生成 % rails generate sorcery:install # サブモジュールの指定 % rails generate sorcery:install remember_me reset_password コアメソッ…

require treeと@import

require_treeを使うと同ディレクトリのcssファイルをすべて読みこんでしまうため、ファイルを読み込む順番が分からなくなる。 // BAD //= require_tree . // GOOD @import 'foobar'; @importを使って必要なファイルのみ読み込む方がファイル管理を安全にでき…

ジェネレーターの設定

cofig/application.rb内でジェネレーターの設定が可能。 class Application < Rails::Application config.generators do |g| g.assets false # assets/stylesheetsのファイルを生成しない g.helper false # ヘルパーファイルを生成しない g.test_framework f…

Ajaxによるボタン表示の切り替え

Ajaxを使えば、Webページからサーバーに非同期で、ページを移動することなくリクエストを送信することができる。 ビュー remote: trueによってJavascriptによる変更が可能になる <%= form_with(model: ..., remote: true) do |f| %> ... <%= f.submit "Foll…

Active Storage

ファイルアップロード機能を提供。 インストール % rails active_storage:install % rails db:migrate 設定 # 開発環境 # config/environment/development.rb config.active_storage.service = :local # 本番環境 Amazon S3を使うときの例 # config/environm…

Procオブジェクト

Procオブジェクト メソッドのブロックを渡したオブジェクト。 callメソッドが呼ばれたときブロック内の処理を評価する。 proc_hi = -> { puts "hi" } proc_hi.call => "hi" # 引数を渡すとき proc_greeting = -> n{ puts n } proc_greeting.call("hi") => "h…

sendによるメソッドの抽象化

sendメソッド 渡されたオブジェクトに「メッセージを送る」ことによって、呼び出すメソッドを動的に決めることができる。 a = [1, 2, 3] a.length => 3 a.send(:length) => 3 a.send("length") => 3 xxx = 'length' a.send("#{xxx}") => 3 どれもオブジェク…

Action Mailer

メイラーの作成 メイラーは概念上コントローラと似通っており、メイラーを生成すると (コントローラと同様に) ビューのディレクトリとテストも同時に生成される。 % rails g mailer UserMailer account_activation UserメイラーとApplicationメイラーの編集 …