Rails関連のことを調べてみた2022年08月16日

Rails関連のことを調べてみた2022年08月16日
目次

ログイン機能を実装中(自分でログインできない)

ログイン機能を実装中(自分でログインできない)

シードファイル
rails db:seed
テーブルのサンプル読み込みの役割

bundle exec rake db:seed
を行ってからログインする

シードファイル
rails db:seed
テーブルのサンプル読み込みの役割
を忘れていた。

seedデータとは
初期データやテストデータのことで動作確認用データを登録する目的で行います。投入したいデータの件数が増えた場合にもこれさえあれば迅速に投入できる環境を構築することができます。
seedデータの投入
下記コマンドを実行します。

rake db:seed
dockerを使用している場合
docker-compose exec web bundle exec rake db:seed
をおこなえば良い。

ファイルにgemを入れる
bundle install

テーブルの作成
rails db:create

マイグレーションを実行
rails db:migrate

テストの実装
rake db:seed

の流れ

❯ bundle exec rake db:see

元記事を表示

ActiveRecord::PendingMigrationError

ActiveRecord::PendingMigrationError

You have 2 pending migrations:
2件の保留中のmigrationファイルがある。
→rails db:createは終わっているが、rails db:migrateしていないでしょと言われている。何をrails db:migrateしていないのかを確認するために

rails db:migrate:statusを行う


migrationは、SQL文を書かずにデータベースの構造を変更したり、元に戻したりできる

実行後の内容
Status Migration ID Migration Name
————————————————–
up 20220815060217 ********** NO FILE **********
up 20220815060220 ********** NO FILE **********
up 20220815073501

元記事を表示

初めてのウェブサービスに縦書きエディタを選んだ理由

# 1.はじめに
 初めまして。55歳を過ぎてWebの勉強を始め、このほど初めてウェブサービスをデプロイしました。開発したのは、ブラウザ上の原稿用紙とでもいいましょうか、[縦書きエディタ](https://genko.herokuapp.com/)です。
![sakubun動画.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779438/622d6577-0bfa-3b58-4010-95c71368b059.gif)

# 2.なぜ縦書きエディタ?
 なぜ縦書きエディタかというと、GIGAスクールが関係しています。

 学校現場に配布される児童・生徒1人1台端末は、手軽さなどからChromebookが採用されるケースが多いのですが、文書を作成するツールは、GoogleドキュメントなどのGoogle系ツールが主体です。Google系ツールには縦書き機能がなく、日本語を教える国語の先生は大変困っています。

 教育現場で使われているにもかかわらず、日本語を縦書きできる環境がないのは教育の根幹にかかわる問

元記事を表示

【RSpec】have_xpathの使い方|テキストフィールドの中身をテストする

# have_xpathの使い方
have_xpathを使うとタグの有無を確認することができます。

“`ruby
#ページ内に指定した属性が’hoge’である指定したタグがあるかテストする
expect(page).to have_xpath “//タグ名[@属性名=’hoge’]”

#ページ内にvalue属性が’サンプルデータ’であるinputタグがあるかテストする(テキストフィールドの中身が’サンプルデータ’かどうかテストする)
expect(page).to have_xpath “//input[@value=’サンプルデータ’]”
“`

※XPathとはなんぞや?という人は以下のサイトを参考にしてください。
[【図解】XPathとは?基本概念から書き方までわかりやすく解説!](https://www.octoparse.jp/blog/xpath-introduction/)

# 参考
– [Capybara RSpecでのマッチャ、セレクタ 「こんなときどうするの」その1](https://qiita.com/kenzan100/items/9642615bad

元記事を表示

Rails 非同期いいね エラー解決集

以前、非同期いいねで大量に困った経験があるので、Railsの非同期いいね(Railsだったら他の非同期にも使えるかも?)なエラー解決集をメモ代わりに作っておきます!

# エラー解決のタイミング
1. RailsにjQeuryを導入する時
1. 部分テンプレート作成時

(若干エラー吐かない内容もありますが、非同期のアクシデント解決の関係で入れてます)

## 1. RailsにjQeuryを導入する時
Qiitaでよく調べている方はご存知かもしれませんが、Railsの記事はRails6以前のものが多く、役に立たないことがあります。そこで、Rails6でのjQuery導入方法をお伝えします!

### 手順

1. Gemfileに**jquery-rails**を追加する
“`ruby:Gemfile
# 最終行に追加しましょう!
gem ‘jquery-rails’
“`
2.bundle install
3.application.jsに**import “jquery”**を追記
“`js:application.js
// This file is automatica

元記事を表示

rails sがうまくいかなかった

背景
railsのバージョンを6.1.6.1 → 6.1.4.4に変更。
変更前はエラーが多発していた
1.
Running via Spring preloader in process ~
2.
gemでgemfile.lockにインストールされていない
3.
rails s
rails db:migrate
rails db:seed

バージョンによる問題、バージョンが理由ではない問題に
切り離して考えてみた。

問題が起こる前の挙動
gemfile
gem ‘activeadmin’
gem ‘devise’
gem ‘net-smtp’
を追加して、
bundle install —path vendor/bundle

実行
❯ rails s

=> Booting Puma
=> Rails 6.1.6.1 application starting in development
=> Run `bin/rails server –help` for more startup options
Exiting
/Users/~/.rbenv/versions/3

元記事を表示

【Rails】同一名のmodule内でクラスを呼び出す方法

## 状況
一見問題なさそうだが
“`User.hoge_method“`で“`User“`モデルではなく、“`Parameters::User:Module“`の“`User“`が呼ばれてしまっているためエラーが起きている。
moduleとクラス名が同一のため起きていると考えられる。
“`ruby
class User
def hoge_method
puts ‘hogeメソッドを実行’
end
end

module Parameters
module User
class ProfileParameter
def fuga_method
User.hoge_method
end
end
end
end
end
“`

“`
NoMethodError:
undefined method `hoge_method’ for Parameters::User:Module
“`
## 解決法

クラス名の前に“`::“`をつける。
ちな

元記事を表示

【Rails】l(エル)メソッドを使用して時刻表示を日本語化rev1

# はじめに
[こちら](https://qiita.com/vaza__ta/items/268cad88235c4de7940c)の記事で一部、よりDRYな書き方をアドバイスいただいたので、その方法で実装をする。ご指摘いただき、ありがとうございます。

# 環境
| No | 項目 | 内容 |
|—:|————-|————|
| 1 | OS | Mac |
| 2 | Ruby | 2.6.3 |
| 3 | rails | 6.0.4 |

# 実装
下記のように、lメソッドを使用して、時刻を表示する。
“`ruby:posts/show.html.erb
# <%= post.created_at.to_s(:datetime_jp) %>
# 上記ではなく、下記で記載する。
<%= l object.created_at %>
“`
application.rbに下記を定義する。
“`ruby:config

元記事を表示

【Rails】turbolinksが原因で、一度リロードしないとjsが反応しない

# はじめに
[【Rails】javascriptで入力フォーム(textarea)の高さを自動で変えたい](https://qiita.com/vaza__ta/items/4a8895889ed8da683845)
上記の記事で書いたものが、一度ページをリロードしないとjsが動かない(高さが変わらない)ことが起こった。
これを改善するために、turbolinksを修正していく。

# 環境
| No | 項目 | 内容 |
|—:|————-|————|
| 1 | OS | Mac |
| 2 | Ruby | 2.6.3 |
| 3 | rails | 6.0.4 |
| 4 | turbolinks| 5.2.0 |
| 5 | webpacker | 4.0.7 |

# 実装
[【Rails】リロードしないとJavaScriptが動かない!【簡単に解決】](htt

元記事を表示

【Rails】モデルに複数のタグを付ける方法

## はじめに
近年のSNSやブログ等では、1つの投稿に対して、複数のタグを付けられることが一般的になっています。
しかし、これらの機能の実装を丁寧に説明した記事はあまりないと思いました。
そこで、自分の復習も兼ねて具体例を交えながら細かく丁寧に解説するために、記事にまとめてみました。

## 実装環境
Ruby 3.1.2
Rails 6.1.6
## アソシエーション
まず、今回の設定条件は以下にします。
– トピック(Topic)にタグ(Tag)をつける
– タグは自身で入力する仕様になっている
– 1つの記事には複数のタグを付けられる
– 1つのタグも複数の記事に使用される

以上より、Topicモデルの中にタグのカラムを設けるのではなく、TopicモデルとTagモデルを分けて作成します。
また、TopicモデルとTagモデルは、多対多の関係になります。
従って、中間テーブル(Tagging)を設ける必要があります。

ER図は以下のように設定します。
![ER図.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaw

元記事を表示

❯ rails g devise:installを実行したら

ログイン機能を実装しているところでインストールをおこなった
以下の表示が出てくる。
❯ rails g devise:install
Running via Spring preloader in process
create config/initializers/devise.rb
create config/locales/devise.en.yml
===============================================================================

===============================================================================

Depending on your application’s configuration some manual setup may be required:

1. Ensure you have defined default url options in your en

元記事を表示

【Rails】エラーメッセージや時刻表示を日本語化する。

# はじめに
デフォルトで英語表記になってしまうところが散見される。特にバリデーションをかけた時のエラーメッセージや、投稿した記事のタイムスタンプなどがよくある。
それを日本語化するため、実装した内容を記載していく。

# 環境
| No | 項目 | 内容 |
|—:|————-|————|
| 1 | OS | Mac |
| 2 | Ruby | 2.6.3 |
| 3 | rails | 6.0.4 |
# 実装
# 1. エラーメッセージを日本語化
[こちら](https://qiita.com/kents1002/items/509ea32715bb78c6d3e2)を参考にエラーメッセージの日本語化を目指す。
“`config.rb
# 以下を追記
I18n.config.available_locales = :ja
I18n.default_locale = :ja
“`
conf

元記事を表示

rails g devise:installを実行できない

rails g devise:install
を実行できません。

質問:
gemfile.lockにdeviceがダウンロードできているかどうか確認するしたいので表示される名前を教えていただきたいです。もしくはダウンロードするにはどうしたらいいのでしょうか。
(device!をgemfile.lockに2行目に構文エラーが出ます)

“`:
❯ rails g devise:install
Running via Spring preloader in process 8305
Could not find generator ‘devise:install’.
Run `bin/rails generate –help` for more options.
“`
と表示されます。

内容を和訳すると
プレローダーがスプリング経由で動いている
generatorが見つからない
と表示されている。
1-3を試した結果、結局のところ、gemfile.lockにdeviceがダウンロードされていない可能性が高そうです。

なお1.2.3の手順で解決しようと試みました。
以下の

元記事を表示

壁にぶち当たりながらDockerで環境構築をする(Rails6 + PostgreSQL)

# はじめに
久しぶりに個人開発をするにあたってDockerで環境構築をしようと思いましたが、
– 転職時のポートフォリオに開発環境で使ったときは、使えそうなコードを見つけ、コードの意味を調べて導入するも、あらためて見るとあまり理解できていない
– 業務でもすでに準備されているDockerfileなどにより環境構築し、日頃はコンテナを起動して開発を進めるだけなので理解が深まっていない

ということに気がつき、危機感を覚えました。

というわけで、今回は自分で考えながらDockerでの環境構築に取り組んでみました。
その過程を記事にすることで頭の整理をするとともに、同じような状況の人の気づきになってくれれば嬉しく思います。

ちなみに、当面の目標はRails6 + Vue3 + PostgreSQLの開発環境をDockerで構築することですが、いきなりあれもこれも手を出すことはせず、まずはRails6 + PostgreSQLに絞ることにしました。

# 目次
[1. 開発環境](#1-開発環境)
[2. 今回のゴール](#2-今回のゴール)
[3. この記事で扱わない内容](#3-この

元記事を表示

devise_token_authで[“Missing ‘confirm_success_url’ parameter.”]のエラーが出た話

はじめに

現在、rails api + react(typescript)でポートフォリオを開発しています。
こちらの記事がとてもわかりやすく参考にさせて頂いているのですが、curlコマンドでアカウント作成とログインができるかを確認する際にエラーが起きてしまいました。
英語の記事を翻訳して解決することができたのですが、同じエラーで詰まっている人もいるかもしれないのでqiitaに投稿しておこうと思いました。

https://qiita.com/kazama1209/items/caa387bb857194759dc5#%E5%8B%95%E4%BD%9C%E7%A2%BA%E8%AA%8D

“Missing ‘confirm_success_url’ parameter.”が発生

参考にしている記事の手順通りに進めると、本来は下記のcurlコマンドで記載したカラムの内容に応じてアカウントを作成とログインを行えるはずなのですが、コマンドを叩くと”Missing ‘confirm_success_url’ parameter.”のエラーが返されます。
~~~
#アカウント

元記事を表示

ruby on rails を AWS Cloud9で実施 7 css レイアウト変更の活用

https://qiita.com/TaichiEndoh/items/35294ff656499d9bbf8d

https://qiita.com/TaichiEndoh/items/9c19319df04a279403a3

https://qiita.com/TaichiEndoh/items/057d35eff8cadbd434ba

https://qiita.com/TaichiEndoh/items/522e956d569e5bbd7b8d

https://qiita.com/TaichiEndoh/items/809d7e94195265c0a201

https://qiita.com/TaichiEndoh/items/e45521cd2c96dc6edf4f

# 今回は表示スタイルの変更を実施します

環境 AWS Cloud9
environment type EC2
instance type t2.micro
platform ubuntu server 18.04 LTS

## リファクタリングの復習

リファクタリング(英:refactorin

元記事を表示

[Rails]ランキング機能、同率順位も考慮に入れ、順位ごとに色分けする

この記事は投稿機能といいね機能が出来ている前提で進めています。
gurumeと書かれてるところは、僕用なので皆さんが作りたいプロダクト用に変えてください。あと、カラムも自分用に書き換えてください。
まず、コントローラーに以下のコードを書きます。

“`
@rank_gurumes = Gurume.all.sort {|a,b| b.liked_users.count <=> a.liked_users.count}.first(3)
“`

このコードはいいね数が多い順に並べるものになっています。first(3)はいいね数が多い3つを並べるという意味です。
次に、htmlに以下のコードをコピペしてください。
“`

いいね数ランキング

<% last_like = 0 %>
<%

元記事を表示

Docker環境でbinding.pryを使用→binding.pryで処理が止まらない

# 概要
pry-byebugを使ってデバッグしようとしたところ、binding.pryで動作が止まらずデバッグできなかった。
# 目次
– [環境](#環境)
– [現状](#現状)
– [対策](#対策)
– [結果](#結果)
– [おわりに](#おわりに)

# 環境
Ruby 3.1.2
Rails 7.0.3
# 現状
このようにデバッカーの入力待ちにならず、HTMLが生成されてしまいます。

“`
my_app $ docker attach my_app_web_1
Started GET “/boards/new” for 172.18.0.1 at 2022-08-13 11:38:59 +0000
Processing by BoardsController#new as HTML
Rendering layout layouts/application.html.erb
Rendering boards/new.html.erb within layouts/application
Rendered boards/new.html.er

元記事を表示

Unknown actionが発生したら

![スクリーンショット 2022-08-13 19.26.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745288/bfd71eb9-547e-592f-42ff-166816a4e686.png)

## 状況説明
“`ruby:views/games/new.html
<%= form_with model: @game_players, url: games_path, local: true do |f| %>
# 中略
<%= f.select :grade_id, Grade.all.map { |grade| [grade.grades, grade.id] }, { prompt: '選択してください' }, include_blank: true %>
# 中略
“`
“`ruby:controllers/game_player .rb
def create
@game_players = GamePlayer.

元記事を表示

【Rails】gem ‘rails-erd’を使用するとFailed: ActiveSupport::MessageEncryptor::InvalidMessage: ActiveSupport::MessageEncryptor::InvalidMessageが発生

# 環境
| No | 項目 | 内容 |
|—:|————-|————|
| 1 | OS | Mac |
| 2 | Ruby | 2.6.3 |
| 3 | rails | 6.0.4 |
|4|Homebrew|3.5.9
# はじめに
gem ‘rails-erd’を使用してER図を作成してもらおうと思った。そこで以下のところでつまづいたため、どう解決したかを記載していく。

# 現状
[こちら](https://qiita.com/TaichiroHasegawa/items/4195cef3865b89589dd9)を参考にgemのインストール〜実行まで進めていった。
homebrew経由でgraphvizをインストールする。
“`:ターミナル
$ brew install graphviz

Disable this behaviour by setting HOMEBREW_NO_INSTALL_C

元記事を表示

OTHERカテゴリの最新記事