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

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

【Rails】テーブルの作成手順

Railsでテーブルを作成する機会があったので、自分でやったやり方をまとめる。

## ①コマンドを実行

“`
$ rails g model Test(任意のモデル名)
“`
※`g`はgenerateの略。
間違えた場合は
“`
rails d model user(任意のモデル名)
“`

で削除できる。

コマンドを実行すると、以下ファイルが自動で作られる。
①モデルのクラスファイル(app/models配下に作られる)
②マイグレーションファイル(db/migrate配下に作られる)
③テスト系のファイル(この辺は導入しているテストツールで異なる?)

## ②マイグレーションファイルを編集

生成されたマイグレーションファイルを修正し、テーブルの中身のカラムを作成するため設定をしていきます。
マイグレーションのファイル名は、生成日時が自動でつき、コマンドで実行したモデル名の複数形で名前がつきます。
例:`20220711090757_create_tests.rb`

“`Ruby
class CreateTests < ActiveRecord::Migrat

元記事を表示

【VSCode】Solargraphの導入【Ruby】

## 拡張機能をインストールする
solargaphの拡張機能をVSCodeにインストールします。

https://marketplace.visualstudio.com/items?itemName=castwide.solargraph

## gemをインストールする
solargraphをグローバルインストールする場合には以下のとおりインストールします。

“`:ターミナル
$ gem install solargraph

# グローバルなgemのdocumentを生成。
$ yard gems
“`
`bundle exec`しないように`settings.json`に以下のように記述します。

“`settings.json
“solargraph.useBundler”: false
“`

bundlerでinstallする場合には以下のとおりインストールします。

“`:Gemfile
group :development do
gem “solargraph”
end
“`

“`bash
$ bundle install

# プロジェクト

元記事を表示

【Ruby on Rails】トップに戻るボタンの作成

# 目標

よくWebページで見るトップへ戻るボタン(画像右下)を作成します。

![Pagetop.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730324/caaf94d0-a965-823b-b2ff-bfb22e672df9.png)

# 開発環境
Rails 6.1.4
ruby 2.6.3

# 目次
– Viewページの作成
– CSSファイルの作成
– jQueryの定義(jsファイルの作成)

## Viewページの作成

まずトップへ戻るボタンとして使用したい画像を用意します。
今回は下記の画像使用。

![arrow.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730324/773d73b8-46c9-4b3e-0167-94bd61858604.png)

下記のように記述します。

“`ruby:index.html

元記事を表示

【JS、rails】要素の外側をクリックすると、その要素が閉じる

# 実装したいこと
クリックすると要素が変化し、要素外をクリックすると要素が元に戻るという機能を実装します。

今回の例は、自分のオリあぷに実装したものです。
検索フォームにホバーするとアンダーバーが表示されます。
検索フォームをクリックすると、アンダーバーの表示が維持されます。
検索フォーム以外をクリックすると、アンダーバーが消えます。
わかりにくいですがGifを参照ください。
https://gyazo.com/a36d20cbf9d2dd2b66f00d4b73b437b3
# 結論
JavaScriptを利用します。
“`javascript:JavaScript
function search_box() {
const search_box = document.querySelector(“#search-box”); // クリックした時にイベントを発火させるための要素を取得
if (!search_box) return null; // 目的の要素がないページでは何も処理しないようにする。⇨ページの挙動がよくなる
const line = doc

元記事を表示

Ruby On Rails7.0.3でscssファイル適用時の’cannot load such file — sassc’エラー

rails7.0.3でアプリケーション作成中に、’cannot load such file — sassc’のエラーメッセージが…

調べてみると以前のversionはデフォルトでinstallされていた`gem “sassc-rails”`が、rails7からデフォルトでコメントアウトされているとのこと。

Gemfileを確認してみると46行目あたりに
“`ruby:Gemfile
45 # Use Sass to process CSS
46 #gem “sassc-rails”
“`
との記載が、これを以下のように修正

“`ruby:Gemfile
45 # Use Sass to process CSS
46 gem “sassc-rails”
“`
`bundle install`します。
その後サーバーを再起動すると、無事解決しました!

元記事を表示

ActiveRecord で find_each しながら map したい

大きなデータを扱うときに使う `find_each` ([doc](https://api.rubyonrails.org/classes/ActiveRecord/Batches.html#method-i-find_each)) しながら値を集めたいとき

“`ruby
processed = []

User.where(‘age > 30’).find_each do |user|
# user に対するなんらかのバッチ処理

processed << user.id end processed ``` みたいにやっていたけど、 `find_each` は `Enumerator` かえすので普通にメソッドチェーンを使えば良い気がする。 ```ruby processed = User.where('age > 30′).find_each.map do |user|
# user に対するなんらかのバッチ処理

user.id
end
“`

元記事を表示

最新版のruby-buildを入れているとRubyをインストール出来ない問題の対処法(暫定版)

こんにちはRUNTEQで開発TA(エンジニア & 講師の補佐)をしているふぁらおです
今回は昨日(2022/07/12)から受講生がはまっているエラーがなかなか初学者にはしんどそうなので解決法を書いていきます
新しいruby-buildを入れると起こるようです(私のは`ruby-build: stable 20220710 (bottled)`)

### 環境(intel版でも発生を確認しています)
OS: macOS Monterey(12.4)
チップ: Apple M1

### エラー内容
rbenvでrubyをインストールしようとすると`Installing openssl-1.1.1q…`と出た後にエラーが出てインストールが出来ない

#### 実際のターミナル
“`
❯❯❯ RUBY_CFLAGS=-DUSE_FFI_CLOSURE_ALLOC rbenv install 2.5.1
Downloading openssl-1.1.1q.tar.gz…
-> https://dqw8nmjcqpjn7.cloudfront.net/d7939ce614029c

元記事を表示

devise_token_auth導入時にURLを変更する方法

導入そのものについては参考になる他記事がたくさんあるので省略。

## 他記事でよく見かけたroutes
“`
Rails.application.routes.draw do
namespace :api do
namespace :v1, defaults: {format: :json } do
mount_devise_token_auth_for ‘User’, at: ‘auth’, controllers: {
registrations: ‘api/v1/registrations’,
sessions: ‘devise_token_auth/sessions’
}
end
end
end
“`
この記述で「[post]/api/v1/auth」ならユーザー作成、「[post]/api/v1/auth/sign_in」でログインになる。

使えることは使えるんだが、authがユーザー作成、sign_inでログインは直感的じゃないので、ユーザー作成なら「[post]/api/v1/us

元記事を表示

管理ユーザが一人もいなくなってしまわないように、更新・削除の制御をする

## 開発環境
macbook air(M1)
rails 6.0.3
ruby 3.0.1

## 状況

+ 一般ユーザーと管理ユーザーが存在するrailsアプリケーション
+ gem等使用せず開発する
+ 管理ユーザが一人もいなくなってしまわないように、更新・削除の制御をしたい
+ users tableのカラムはname, email, password_digest, adminの構成
+ adminはboolean型で管理

## コード例
データベースに登録されている最後の管理者が自身の管理権限を更新、削除出来ないよう、modelにコールバックを設定する。
“`Ruby:model/users.rb
before_update :admin_cannot_update
before_destroy :admin_cannot_delete

private

def admin_cannot_update
throw :abort if User.where(admin: true).count == 1 && self.admin_change == [true

元記事を表示

【Railsエンジニア向き】Phoenixでコンソールからモデル操作をやってみよう【ハンズオン】

## Elixirのコンソールで随分苦しんだので

Phoenixを触ってはみたものの、モデル操作辺りでコンソール操作がうまくいかず、すっかり打ちひしがれているそこのアナタ!

PhoenixもRailsのようにサクサク触ってみたいではなくないですか?

ただ・・・Phoenixのやつ、Railsコンソールみたいにサクサク実験できる段階になるまで少し前提条件が存在するようです。

実際、コンソールで挙動を試そうとしてググっても、何通りも書き方が出てきたり、そのとおりにやってみても言うこと聞かない事が多くて、コンソールの操作に本当にイライラします。

ここでは、そんな状況から脱するための前提条件をステップを踏んで紹介していきたいと思います。

## ここでやること

– アプリ立ち上げ
– モデル作成
– 新規データーの作成
– DBへの登録(insert)

## 前提条件

MacOS 12.3.1 (Apple M1)
Elixir 1.13.4 (compiled with Erlang/OTP 25)
Phoenix installer v1.6.10
psql (Postg

元記事を表示

【Rubocop】.rubocop.yml設定例【Rails】

## .rubocop.yml設定例
“`.rubocop.yml
require:
– rubocop-performance
– rubocop-rails
– rubocop-rspec

AllCops:
NewCops: enable

Layout/EmptyLinesAroundAccessModifier:
EnforcedStyle: only_before

Layout/IndentationConsistency:
EnforcedStyle: indented_internal_methods

Layout/LineLength:
Max: 80

Style/AsciiComments:
Enabled: false

Style/Documentation:
Enabled: false

Style/FrozenStringLiteralComment:
Enabled: false

Style/StringLiterals:
EnforcedStyle: double_quotes
“`

## 各項

元記事を表示

RailsでActive Hashを使ってカテゴリを作る

RailsでActive Hashを使ってカテゴリを作る方法を紹介します。

こちらの記事
https://qiita.com/satoka_com/items/183d22541c3a54e0d878
を参考にしました。

最初にGemfileに、
“`
gem ‘active_hash’
“`
を記載して、
“`
$ bundle install
“`
します。

自分の場合だとrecruitmentモデル(求人ページ)にカテゴリを持たせたいと考えているので、
そこにActive Hashを使ってカテゴリを作っていきます。

最初にJobategoryモデルを作成します。
“`Ruby
#job_category.rb
class Category < ActiveHash::Base self.data = [ { id: 1, name: 'サンプル' }, { id: 2, name: 'サンプル2' }, { id: 3, name: 'サンプル3' } ] include ActiveHash::Associations has_many :r

元記事を表示

【Rails】リロードをしないとJavaScript (jQuery)が動作しない

今回はスクールでも頻発している
”リロードしないとjQueryが動かない問題”について記事にしていこうと思います。
かくいう私も見事この沼にハマり、かなり悩まされました、、、

# 開発環境
Rails 6.1.4
ruby 2.6.3

# 目次
– 原因
– 対処法
– 対処法(番外編)

## 原因
私の場合、FontAwesome導入時にjQueryのコードを追記していたのですが、
なぜかそれが削除されており、jQueryが作動しないという状況でした。

## 対処法

下記のコードを追記します。

“`ruby:config/webpack/environment.js
const webpack = require(‘webpack’)
environment.plugins.prepend(
‘Provide’,
new webpack.ProvidePlugin({
$: ‘jquery/src/jquery’,
jQuery: ‘jquery/src/jquery’,
Popper: ‘popper.js’
})
)
“`

元記事を表示

もう迷わないRubyのコード自動整形のやり方!!

今日は意外と時間かかったコードを自動で整形してくれる拡張機能を入れてみたのでそちらを記事に書いていこうと思います。
調べても思ったより上手くいかなくて、手こずったためこれから導入する人の少しでも参考になれば幸いです

まずはrufoというgemをインストールします
“`
$ gem install rufo
“`
VScodeの拡張機能でrufoと検索してダウンロードします
終わり

“`
これで一括でrufoでコードを整形できる
$ rufo .
“`

“`
特定のファイルだけ走らせる時
$ rufo ファイル名(ディレクトリ名)
例: $rufo app/views/layouts/application.html.erb
“`
ちなみにrufoでのコード整形の詳細設定の一例を書いておきます
プロジェクトフォルダ直下に.rufoファイルを作成
“`.rufo
parens_in_def :yes //これでメソッドに引数を渡すときに()が自動で生成される
trailing_commas :always //これで配列の要素の後ろに必ず,がつくようになる
“`

`

元記事を表示

ローカルでRailsの環境構築

Railsチュートリアルの通りにCloud9で環境構築をしていましたが、何度やり直しても正体不明のエラーが発生し初学者の自分では解決できそうになかったので、[こちらのProgateの記事](https://prog-8.com/docs/rails-env)を見てMacのターミナルで環境構築し最初からローカルでやるようにしました。ところが、ここでもエラーが発生し、調べたところ下記の記事が検索結果のトップに出てきたのでこの通りにすると一応解決できました。

無限 Rails is not currently installed on this system. 問題の調査 – Qiita
https://qiita.com/amuyikam/items/313bc89c1de320a4257e

この記事の通りに
hash -r
を実行しました。

“`
ys@mbp ~ % /usr/bin/rails –version
Rails is not currently installed on this system. To get the latest version, simply

元記事を表示

【Rails】Rails 6 × Tailwind CSS v2導入 – 備忘録

# 目次
[1.はじめに](#1-はじめに)
[2.TailwindCSSの導入](#2-TailwindCSSの導入)
[3.動作確認](#3-動作確認)
[4.おわりに](#4-おわりに)
[5.参考記事](#5-参考記事)

# 1. はじめに

Railsに慣れることが目的なので、CSSでもBootstrapでもよかったのですが、
CSSだと時間がかかるし・・・
Bootstrapは現場でほぼ使うことない・・・
と思いTailwindCSSを使ってみることにしました。

Rails の練習用にプロジェクトを作成している際に、TailwindCSSの反映で少し詰まったので対処を記載します。

Railsのアプリケーションの作成が完了した「後」の手順になります。

基本的に以下の記事を参照させていただき、作業を進めました。
[Rails6にTailwindCSSを導入し、tailwind.config.jsでカスタマイズもできるようにする](https://zenn.dev/ikuma/articles/install-tailwind-in-rails6-with-webpack

元記事を表示

【draw.io】ER図テーブルに列と行を追加する方法


図描画ツール[draw.io](https://www.draw.io/)でER図を作成中、
テーブルの列や行の追加の方法がわからなかったのでメモしておきます。

↓ここにありました。

![スクリーンショット 2022-07-11 143732.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730324/6c375dc6-32fd-40fa-b237-9dbe7f0c9075.png)

対象のテーブルを選択して、右のArrangeタブのTableエリアを操作すればできました!

元記事を表示

Webpacker::Manifest::MissingEntryError 解消法 – Rails version 6.0 環境

## 対象環境
node.js : v16.x.x
rails : v6.0.x

## 具体的なエラー前動作
“`:terminal
rails new xxx
cd xxx
rails g scaffold user
rails db:create
rails db:migrate
rails s
“`
として、
http://localhost:3000/users
にアクセスすると下記のエラーが発生

![Screen Shot 2022-07-11 at 11.58.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2646082/3bf33b38-d7f7-251e-5b27-00c41ad72a48.png)

## 対処法
### 1.railsのバージョンを6.1.xに変更する(推奨)
参考:
コマンド
Lhttps://qiita.com/seijMAN/items/ac363f6688c72f4ea186
インストール可能なバージョン参照
Lhttps://rubygems.

元記事を表示

エラー解決: NoMethodError – undefined method `own?’ for nil:NilClass:

このエラーはよく見過ぎて対応の仕方がよくわかってきましたが、改めてまとめていきたいと思います。

今回エラーが出た場所はここです。
“`
<%= render 'crud_menus', post: post if current_user.own?(post) %>
“`
このエラーはmethodのレシーバーがundefinedだよって忠告されているエラーです。
今回はownの前のcurrent_userがnilになってますよ!と言うことです。

対応方法は本当に色々とありますが、私はよくunlessを使います。
下記のようにunlessをつけると、current_userがnilでない時に<%= render 'crud_menus', post: post if current_user.own?(post) %>を実行すると言うことになります。
“`
<% unless current_user == nil then %>
<%= render 'crud_menus', post: post if current_user.own?(post) %>
<% e

元記事を表示

rollbackできないエラーの時

rollbackをしようと実装していた矢先、以下のようなエラーが出て、少しはまってしまったため、その備忘録を書かせて頂きます。
“`
ActiveRecord::UnknownMigrationVersionError:
No migration with version number 20220703020507.
“`

このエラーはどう言う時に出るかというと、下記の表で上から三行目に
[********** NO FILE **********]と書かれてるように、NO FILEがあると、うまくrollbackができなくなってしまいます。
“`
database: starbuck_services2_development

Status Migration ID Migration Name
————————————————–
up 20220702022539 Sorcery core
up 20220702115611 Add role to users

元記事を表示

OTHERカテゴリの最新記事