ヨージとプログラミング

プログラミング勉強の記録

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

【Rails】RSpecでインスタンス変数を変更した後はreloadしよう

createした後にインスタンス変数を設定したい場合の話 RSpecでテストを行う前にletでインスタンスを生成することが多いと思います。 # 例 productクラスのインスタンスを生成しproduct_1に代入 let(:product_1) { create(:product, name: 'macbook') } 上の…

【Rails】Could not find rake-12.3.1 in any of the sourcesのエラー解消

環境 Docker for mac gem 'spring-commands-rspec' bin/rspecでrakeが存在しないと言われた 結構あるあるなエラーだと思います。 spring-commands-rspecというrspecを高速化するgemをインストールし、試しにdocker-compose exec web bin/rspecとしたらエラー…

【Rails5】Active::Recordが存在しないときにnilを返したい(find_byを使おう)

find(id)では存在しない時はエラーになる [2] pry(main)> p = Spree::Product.find(0) => Spree::Product Load (0.9ms) SELECT `spree_products`.* FROM `spree_products` WHERE `spree_products`.`deleted_at` IS NULL AND `spree_products`.`id` = 0 LIMIT…

【Rails5】SpreeおよびSolidusの仕組みメモ(執筆中)

公式ドキュメントより 「あるproductは最低1つのSpree::OptionTypeを持つ必要あり」 →しかしproductモデルにはSpree::OptionTypeの外部キーなし。中間テーブルSpree::ProductOptionTypeを通して保有していると思われる。 例)複数の色を提供したければ、"Co…

【Rails5】find_byで取得するobjは1つ、whereは全部

スクール課題中に気づく 今までの誤解がやばかったので自分用のメモ このQiitaのおかげで今までの誤解がとける 【rails】find・find_by・whereについてまとめてみた - Qiita 要約すると # 条件に該当するもののうち最初の1つのみ取得 @images = Image.find_…

【Rails5】コメント機能でのStrongParameterの設定方法

ハッシュが2つ出てくる 私が今回実装したコメント投稿formはこんな感じ。 = form_with(model: [@post, @comment]) do |f| .form-group = f.text_area :body, placeholder: 'コメント追加.', class:'form-control' = f.submit '投稿する', class:'btn' 一見…

【Rails5】devsieのルーティング方法覚書

追記したいコントローラーをルートに書く必要あり Rails.application.routes.draw do root to: 'igposts#index' devise_for :users, skip: [:sessions, :registrations, :signups], controllers: { # 編集するコントローラーを以下に記載 omniauth_callbacks…

【Rails5】途中でCoffeeScriptを排除するときのherokuでの対応方法

herokuでどのように対応すればいいか書いてある記事が少なかったのでメモがてら はじめから排除する場合はかんたん おなじみですが $ rails new --skip-coffee 途中からの場合 開発環境では Gemのcoffeescriptをコメントアウト # Use CoffeeScript for .coff…

【Rails on Docker】credentials.yml.encからmaster.keyを取得する時につまずいたのでメモ

Gemインストールしたのにインストールされてないと言われて… $ EDITOR='code --wait' rails credentials:edit => Could not find minitest-5.12.0 in any of the sources Run `bundle install` to install missing gems. 環境変数EDITORにvscodeを設定してma…

【Rails】Pagyで1ページに2つのページネーションを設置する

先に結論を書きます ページ内にタブ(tab)を設置し、表示内容を切り替えることがあると思います。 (イメージ) 通常(ページネーション1つの時)であれば次のように定義すると思います。 def index @pagy, @users = pagy(User.all) end これとは別に例えば…

【Rails】フォロー機能をAjaxで実装する時は、フォロー後にユーザー情報を更新しよう

星を押してフォローすると星が塗りつぶされるタイプ フォロー前 フォロー後 星を塗りつぶすかどうかは, current_userがすでにフォローしているかどうかをif文で確認して決めています。 - if current_user.following?(user) # 塗りつぶす = link_to icon('fas…

【Rails】routesの設定で「resource」と「resource"s"」の違いで小一時間悩んだ話

DELETEのrouteに:idと:user_idの2つ現れてしまった routesをネストした時に、resourcesと単数形でなかればならないところを複数形で書いてエラーになりました。なんのこっちゃだと思うのでまずはコードを見てください。 # 誤ったコード Rails.application.r…

【Rails】RSpecテストでActiveRecord::RecordInvalid:Validation failed: Email has already been taken エラー

環境 Ruby 2.6.3 Rails 5.2.3 RSpec 1.7.0 Docker for mac テスト後にロールバックしていない 該当のRSpec require 'rails_helper' describe 'レコード管理機能', type: :system do describe '一覧表示機能' do before do user_a = FactoryBot.create(:user,…

【Rails】本番環境(heroku)へのseedの流し込みでハマったのでメモ

主なエラーはfaker関係 いくつものエラーが出ましたが、発端はfakerというgemです。説明不要かもしれませんが、fakerを使用すれば色々なフェイクデータを生成することができます。 私の場合は以下のように、ユーザー名に使用しています。 2行目のFaker::Name…

【Rails】Record.lastで取り出せるのはどんなデータか?

作成中のアプリの挙動がおかしいことに気づいた いきなり私事ですが、私の作成している体重記録アプリで、最後に記録した体重をDBから取得するのですが、こうしました # あるuserの最後のレコードの体重を取得 @last_record = user.records.last.weight 結果…

【Rails】ページネーションを「Pagy」で導入する

Pagyを使う理由 Railsアプリにページネーションを導入する際、長くwill_paginationやkaminariが使われてきており、定番となっているのは言うまでもないですね。 2018年11月に登場し、定番たちの間に割って入ろうとしているのがPagyです。Pagyの利点は次のサ…

【Rails】link_toの中に画像と文章を入れる

達成したいこと Railsでタグを生成することでおなじみ、link_toメソッドの中に画像と文章を混載したい。 link_toの基本的な使い方 link_to (リンクテキスト等), (リンク先) ちなみに画像の表示にはimage_tagメソッドを使います。sizeのオプションはほぼニコ…