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

Railsの雑多なメモ(assign_attributes、バリデーションnumericality、render_to_string、delegate、truncate)

assign_attributes 特定のattributeを変更するためのメソッド。オブジェクトの変更をしただけで、DBには保存されない。 article.assign_attributes( article_params ) def article_params params.require(:article).permit( :title, :description, :state ) …

FactoryBotのtrait、transient、evaluatorについて

概要 Railsのテストでテストデータを作成する際に便利なgemである、FactoryBotにあるtrait、transient、evaluatorの機能について備忘録として書きます。 trait 通常のテストデータの作成とは別に、モデルの属性値の集合を定義できる。共通の属性値を持ったテ…

Punditを使用した認可機能の作成方法

前提 scaffoldで作成したようなスタンダードなRailsアプリを想定しており、UserとPostモデルがあり1対多の関係にあるものを想定しています。 class User < ApplicationRecord has_many :posts enum state: { writer: 0, editor: 1, admin: 2 } end class Pos…

内部結合を利用したあいまい検索時にsyntax errorで詰まった話

概要 whereメソッドとjoinメソッドを使用して、内部結合を利用したあいまい検索をした時、syntax errorで詰まった話。 失敗時のコード 掲示板に関して、作成ユーザー、掲示板タグ、掲示板タイトル、掲示板コンテンツ(記事内容)で検索を行おうとして以下の…

Rakeタスクのテストをする方法

実装したいこと 前回の記事で実装したrakeタスクの内容をRSpecでテストしたい。 備忘録として記事に残してます。 前提 RSpec、FactoryBotは既に設定されているものとして記述してます。 実装 1. specディレクトリ配下にrake_helper.rbを作成し、設定を記述…

Rakeタスクとwheneverを使用して、定期実行したい処理を回す方法

そもそもの定義 rakeタスクとは Rakeとは:rubyで処理内容を定義できるビルドツールのこと。 Rakeタスクとは:Rakeが実行する処理内容を「Rakeタスク」と呼ぶ。Rakeタスクを定義する場所を「Rakefile」と呼ぶ。 wheneverとは wheneverとは:cronと呼ばれる、…

gretelを使用したパンくずリストの作成

1. gretelをインストールした後、以下のコマンドを実行する # Gemfile gem 'gretel' => bundle installコマンドを実行 以下のコマンドを実行することで、config配下にbreadcrumb.rbというファイルが生成される。 % bin/rails generate gretel:install 2. …

erbからslimへのテンプレートエンジンの変更方法&slimの記法まとめ

Slimの導入方法 1. Gemfileにrails-slimを加え、bundle installコマンドを実行 # Gemfile gem 'slim-rails' =>bundle installコマンドを実行 2. デフォルトで生成されるviewファイルのテンプレートエンジンをslimに変更することも可能 # config/applicatio…

テスト環境でsorceryを使用したユーザーログイン機能を使用したとき、Userクラスのインスタンスメソッドでハマった話

概要 テスト環境でsorceryを使用してログイン機能を追加した時、user.passwordで詰まった話。 失敗時のコード 以下のような、ユーザーが正常にログインできるかのテストコードを作成した時、テストに失敗した。 # spec/factories/users.rb FactoryBot.define…

RSpec、Capybara、FactoryBotを使用したテスト環境の構築・設定方法、及びテストの書き方一例

テスト環境の構築構築方法 1. RSpec、Capybara、FactpryBot、Webdriversのgemをインストール # Gemfile group :development, :test do gem 'rspec-rails' gem 'factory_bot_rails' gem 'capybara' gem 'webdrivers' end => bundle installコマンドを実行 2…

フォームヘルパーとrenderを使用した部分テンプレートの書き方

・フォームヘルパー復習 = form_with model: @user do |f| = f.text_field :name = f.text_field :email 上記のフィールドを作成すると、以下のHTMLタグが生成される = input type="text" name=user[name] = input type="text" name=user[email] 上記のフォ…