Rails関連のことを調べてみた2021年03月26日

Rails関連のことを調べてみた2021年03月26日

Rails6 Webpacker::Manifest::MissingEntryError in ~~のエラーの解決

“`
rails webpacker:install
“`

元記事を表示

郵便番号による住所自動入力機能について

こんにちは、たにーです。

今回は、郵便番号を入力すると
自動的に住所が入力される機能についてです。

#前提
– railsでのアプリケーション
– deviseにて新規登録画面を作成済み。
– userモデルに郵便番号と住所のカラムがあること。
(今回は、postcode,addressです。)

**参考画像**
![スクリーンショット 2021-03-26 0.22.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1029483/5b1e2d68-48dd-557b-3a7d-56ef306d2929.png)

**モデルのカラム(schemaファイル)**

“` rb:app/db/schema.rb

ActiveRecord::Schema.define(version: 2021_03_25_151319) do

create_table “users”, force: :cascade do |t|
t.string “email”, default:

元記事を表示

【Rails】credentials.yml を使って管理画面を作る(その2)

## ■ はじめに

皆さん、こんにちは。
桜も開花して、春の訪れを見た目でも感じられるようになってきましたね。

春の訪れを感じると共に、
年が開けてから随分と時間が経ってしまったのだなと、
やや焦りを感じてしまう自分がいるのですが、皆さんはどうでしょうか?

今回は前回の「【Rails】credentials.yml を使って管理画面を作る(その1)」の続きになります。(前回⇒ https://qiita.com/tsuchiya-yu2/items/ab77a59abb9aef73f187 )

今回は前回以上に作業がありますので、焦らずゆっくり進めていきましょう!

(Qiitaの表示ではコードが見にくくなりそうな箇所に関しては、GitHubのURLを用意しておりますので、適宜ご活用くださいね。)

## ■ 本記事での試み
前回のその1では、「管理画面は管理者のみアクセス可能で、一般ユーザーがアクセスを試みるとトップページヘリダイレクトするようにする」を目的に実装を進めてきました。

https://qiita.com/tsuchiya-yu2/items/ab77a59a

元記事を表示

?preloadとeager_loadの使い分けについて

preloadとeager_loadをどのようにして使い分けるかのメモです。

※議論の余地がかなりあるという前提です
### :white_check_mark: 前提条件:全てのレコードを取得するような場合
– 条件を指定する(whereなどを使う)ような場合は、eager_loadを使う。(テーブル結合していなければ、そもそも関連先の情報がわからないためpreloadは使えない)
– 条件を指定しない場合は、preload、each_loadの使い分けはケースバイケース。所得したいデータのカラムが少ないならeach_loadを使って一つのクエリで済ませるべきだし、多いならpreload使った方がいいかも。基本的には、レスポンスタイムはpreload使った方が早い。

### :white_check_mark: 前提条件:全てのレコードを取得する+関連先のデータが1対1であるような場合
– 1対1であるかつ条件を指定しない場合、eager_loadを使うことで結合してからまとめて取得する方が効率が良い場合が多い。
(1対1になるようなデータを持ってくる場合は、抽象的ですが関連度

元記事を表示

Rooで取り込んだExcelの日時のデータがうまく反映されない

こんにちは
###エラーが出た背景
rooを使ってexcelの日時のデータを取り込むよう開発を進めました。
ある程度できあがって確認しようとすると、下記のようなエラーが出ました。
おそらく, `in_time_zone`メソッドがinteger型に対応できていないと
下記に
– エラーメッセージが出た部分
– 対応するメソッド(controller)
– エラーが発生したファイル
を載せています。

![Screen Shot 2021-03-22 at 1.02.11 PM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593744/d9013f00-df80-7e60-56e2-6bc6c8125160.png)

“`app/controller/ir/meeting_logs_controller.rb
def time_from_excel_date_time(excel_date, excel_time)
date = excel_date.in_time_zone

元記事を表示

Rails Gemfileでbcrypt追加後にメソッドが使えない

##はじめに
初めまして。私はプログラミングを勉強してまだ間もない駆け出しのエンジニアです。Qiitaへの投稿も含めまだまだ勉強中です。そしてこれがQiitaへの初投稿となりますのでお手柔らかにお願いします。
主に初心者の方向け、また自分用のメモとしてこれから発信していきます。
##開発環境
Rails 6.1.3 ローカル環境でProgateのTweet_Appを作成中
##概要
今回はタイトルにもある通り、Gemfileへbcryptを追加したにも関わらず、has_secure_passwordやauthenticateといったメソッドが使えない!と言う状況に出くわしたのでそちらを共有していきます。

Gemfileに `gem ‘bcrypt’` を追加。
その後ターミナルで `bundle install` を実行。

さあ、学んだパスワードのハッシュ化を実装させていこうと`has_secure_passwordメソッド`を記述

“`ruby:models/user.rb
class User < ApplicationRecord has_secure_pas

元記事を表示

mimemagicエラー

gemを入れてbundle install を行ったところ、以下のエラーが出ました。

Your bundle is locked to mimemagic (0.3.5), but that version could not be found
in any of the sources listed in your Gemfile. If you haven’t changed sources,
that means the author of mimemagic (0.3.5) has removed it. You’ll need to update
your bundle to a version other than mimemagic (0.3.5) that hasn’t been removed
in order to install.

んん、よく分からん。。とりあえずGemfile.lockで関係してそうな内容を消して再度bundle install をしたら直りました。

元記事を表示

Twitter API 登録の仕方(2021年3月17日)

【欲しいもの】
bot を作るために必要なもの。
1. Access Token
2. Access Token Secret
3. Consumer Key
4. Consumer Secret
これらを以下で取得していく。

# 準備編

### 1
ここにアクセスする

https://developer.twitter.com/en

### 2
Apply(右上)

### 3
Apply for a developer account

### 4
目的を選ぶ(今回はbotを作りたいのでhobbyist > making a bot)

### 5
get start

### 6
名前とかemailとか入力する

### 7
何に使うのか入力する
利用規約に同意する
色々進めて、、、

### 8
submit application
メールが送られたっぽい

### 9
メールにある[Confirm your email]をクリック
メールアドレス、パスワードを打って認証完了する。

### 10
「今あなたのレビューをしているよ!!」的なメールが届く。
他の人の

元記事を表示

allメソッドって良くないの?って話

こんにちは。たにーです。

今回は、チーム開発で少し議論した

「アクション内でのでのallは良くない?」についてです。

“`items_controller.rb
@items_all = Item.all
“`

#結論

結論から言うと、悪いことはないが
場面によっては使い方を考えなくてはいけないということです。

カリキュラムで作成したアプリでは、
レコード数がmax10個ぐらいで試していたこともあり、取り出すデータ量が少ないため問題なかった。

もし、その数が100個、1000個、1万個あった場合だと、
情報量が多すぎて、処理速度が遅くなり、ページのロードが遅いなどが起きるかもしれません。

なので、その処理速度をより早くする書き方をご紹介します。

#状況について

– railsでwebアプリケーションを開発中。
– 販売している商品数をviewに表示させたい。
例:( 商品一覧(全:〇〇件) )
– viewとcontrollerには下記のように書いていた。

“`rb:index.html.erb

【Rails6】flatpickrカレンダーの導入で気をつける事

自作ポートフォリオを作成している時に、bootstrapのカレンダーが使いづらかった為、flatpickrを導入する事にしました。その時に躓いたポイントがあったので、シェアします。

## 開発環境
– macOS Catalina 10.15.7
– Ruby 2.7.2
– Rails 6.1.1

すでに何かしらのアプリを作っている前提で進めていきます。

## まずはこちらの記事をベースにflatpickrを導入
– [【Rails6】flatpickrのカレンダーを使ってDBにパラメータを保存する方法](https://qiita.com/yasu0408/items/77673d1b0cbc0fc950a1)

## 気をつけないといけなかった点
上記の記事で、

“`erb

<%= form_with model: @calendar do |form| %>
【Rails&heroku】MySQLで出来てた「あいまい検索」がPostgreSQLで出来ない場合にやること

AWSでコード完成、いざherokuへデプロイ!・・・したけどエラー。
調べてみると、あいまい検索の部分がおかしいらしい。

####【ページ内リンク】
[0.環境](#0環境)
[1.ソースコード](#1ソースコード)
[2.そもそもあいまい検索部分が原因だと分かった経緯](#2そもそもあいまい検索部分が原因だと分かった経緯)
[3.解決策](#3解決策)

#0.環境
・AWS
・heroku/7.48.0 linux-x64 node-v12.16.2
・Rails 5.2.4.5
・ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]
・MySQL 5.7.31
・PostgreSQL 9.2.24

#1.ソースコード
“`rb:Example.rb
@teams = Team.where(“#{key} like ?”, “%#{value}%”)
“`
・いたって普通のあいまい検索。`key`がキー、`value`が値。
【例:`key = “id”`、`value = “(検索用に入力した値)”】
・MyS

N + 1問題を解決する

はじめに仕込んでいたgem bulletが警告ログを発したので解決してみます。
![スクリーンショット 2021-03-25 19.32.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698694/f56e2289-e0a3-c077-c666-f8257ef6e957.png)

##N + 1問題とは?
データベースへのアクセス回数が必要以上に多くなってしまう現象の事。モデル間のアソシエーションで発生します。

##gem bulletとは?

N + 1問題が発生してる箇所を警告で教えてくれるgemです。

##現状

“`
CareRecipitent Load (0.4ms) SELECT “care_recipitents”.* FROM “care_recipitents”
↳ app/views/caregiver/tops/index.html.erb:1
Caregiver Load (0.5ms) SELECT “caregivers”.* FROM “care

元記事を表示

repec 備忘録

#導入方法
“`ruby:Gemfile
group :development, :test do
gem ‘rspec-rails’ #追加
gem ‘capybara’ #追加
#元あるやつはコメントアウトする
end
“`
“`:ターミナル
$ bundle install
$ rails generate rspec:install
“`

“`ruby:spec/spec_helper.rb
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
require ‘capybara/rspec’ #追記
RSpec.configure do |config|
config.before(:each, type: :system) do #追記
driven_by :rack_test #追記
end #追記
.
.
.
config.include FactoryBot::Syntax::Methods
#これを記入することでFactoryBot.create(:

元記事を表示

Rails6 Herokuにデプロイしようとしたらエラーが多発した話

# 前提
オリジナルアプリケーションを開発した後、herokuにデプロイした際にでたエラーを備忘録としてまとめておこうと思います。

# 結論
– assetのファイルの場所が違った
– bundlerのバージョンを合わせた
– platformを変えた

# 1つ目
“`Terminal
% git heroku push master
“`
実行すると、、、

“`Terminal
.
.
.
# 省略
Caused by:
Sass::SyntaxError: File to import not found or unreadable: tagsinput.
.
.
.
remote: !
remote: ! Precompiling assets failed.
remote: !
.
.
.
“`
と表示された。
tagsinput.jsが読み込まれていないとあるので、みてみるとrequire(‘../tagsinput’)をjavastcript/packs/application.jsに記述していなかったのが原因だったっぽい。

# 2つ目
1つ目

元記事を表示

【Rails jQuery Raty】ブラウザバックすると星が増える不具合

はじめまして、プログラミングを初めて3ヶ月の初学者です。
Ratyを利用した星評価を実装中に
ブラウザバックで星評価のある画面に戻ると
星5個が星10個になるという不具合にぶつかりました。

いくら検索しても解決せず、最終的にメンターと試行錯誤して解決したので
今日は同じ目に逢ってる方と、いつかの自分の為に記録します。

ちなみに初めて書くのでお手柔らかに…

#目次
– 開発環境
– 不具合
– 何故なるのか?
– 結論 ←ココが解決策
– 解説
– 試した方法

#開発環境
– Cloud9
– ruby ‘2.6.3’
– Rails 5.2.4.5
– jquery

#不具合
本来5つ星での評価をしたいのに、
ブラウザバックで評価の存在するページに戻ると
星の数が倍になる
![スクリーンショット 2021-03-25 16.16.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1194737/0be10826-082b-ee40-cf4b-45eaa2d9d116.png)

正しい表示

元記事を表示

【初学者向け】uninitialized constantエラー

# uninitialized constantエラーが起きる原因
uninitialized constant errorを直訳すると「初期化されていない定数のエラー」という意味:expressionless:
Railsでは「定数やclassが定義されていない」ことを意味:thinking:
uninitialized constantは名前が間違っているという意味のNameErrorということ:rolling_eyes:
つまり、ファイル名の記述間違いなどで、呼びたいクラス名を記述出来ていない場合などでエラーが発生します。

#実際に出たエラー
NameError in Users::RegistrationsController#create
uninitialized constant User::GenderId

#ここから考えたこと
う〜ん:thinking:User::GenderIdでエラーが発生してるみたいだから、GenderIdに関わる内容を確認してみたほうがよさそうだな。Railsでは「定数やclassが定義されていない」ことを意味する。。。ということはcla

元記事を表示

RailsのGPL混入問題についてまとめ

## 概要
RailsのGPL混入問題についてまとめました。間違いがあればご指摘ください。(2021/3/25現在)
https://github.com/rails/rails/issues/41750

ここには3つの問題がある。

– **Railsが依存しているmimemagicのライセンスがMITからGPL2.0になった**
– もともとGPLライセンスのものが混入していたのにMITになってしまっていた
– **これにより、Railsのbuildができなくなった**
– Railsが依存しているmimemagic0.3.5が削除されたことが原因
– **Railsの依存モジュールにGPLライセンスのものが混入することとなった**
– mimemagicを0.3.6以降にすればbuildはできるが、GPL問題は解決しない

## mimemagicのライセンスがMITからGPL2.0になった
mimemagicはMITからGPLに変わった。
[mimemagicのissues #97](https://github.com/minad/mimemagic

元記事を表示

【Rails】ユーザー編集時だけパスワードのバリデーションを無効にする(devise)

# 環境
macOS: Big Sur Ver11.2.2
Rails: 6.0.0
Ruby: 2.6.5

# この記事の目標
devise のデフォルトのユーザー編集画面ではパスワードの変更ができるが、現在のパスワードを入力しないとユーザー情報が編集できないようになっている。

そこで、
①現在のパスワードを入力しなくてもユーザー情報ができるようにする
②ユーザー編集のときだけモデルに設定しているパスワードのバリデーションを解除し、パスワード変更欄が空欄のままでもユーザー編集ができるようにする

の2点を実装することを目標とします。

# 現在のパスワードを入力不要にする
これについては多くの記事が出ています。以下が参考になります。

[参考①](https://easyramble.com/user-account-update-without-password-on-devise.html)
[参考②](https://wcf-drill.com/devise%E3%81%AE%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E6%9

元記事を表示

Active Storageで画像投稿とツイート機能を実装しようとしたらエラーになってしまいました

RailsでActive Storageを使って画像も投稿できるツイッターのようなものを作ろうとしていたのですが、それをしている途中でRouting Errorになってしまいました。

“`
Routing Error
No route matches [POST] “/posts/new”
“`
今回はその解決法と、投稿が表示される仕組みから今回どうしてエラーが解決できたのかを自分なりにまとめていきたいと思います。

エラーになってしまったcontrollerがあるのでそちらを見ていきたいと思います。
いかがそのcontrollerの部分のコードです。

“`
class PostsController < ApplicationController before_action :authenticate_user!, only: [:new, :update, :create, :edit, :update, :destroy] before_action :find_post, only: [:edit, :update, :show, :destroy]

元記事を表示

Rails→Git→Heroku→サイト公開 〜手順〜

#概要
Railsで作成したプロジェクトをデプロイしてサイト公開するまでの手順の解説
今回は公開の手順なので導入方法については明記していません。参考欄をご参照ください。
メモなので細かい事は書いてません。すいません。

#目次
・[手順① プロジェクトの準備](#手順-プロジェクトの準備)
・[手順② Gitとの連携](#手順-gitとの連携)
・[手順③ herokuとの連携](#手順-herokuとの連携)

##環境
| | version | etc |
|:-:|:-:|:-:|
| PC | 13-inch, m1, 2020 | MacBookPro |
| OS | 11.2.3 | Big Sur |
| Rails | 6.1.3 | |
| git | 2.24.3 | Apple Git-128 |
| heroku | 7.51.0 | node-v12.21.0 |
| bundler | 2.1.4 ||

#手順① プロジェクトの準備
Railsで新規プロジェクトを作成

“`zsh
% rails new sample_app(← 任意の名前)

元記事を表示

OTHERカテゴリの最新記事