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

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

【Rails初心者】ユーザー/管理者を分けて認証機能を作る

## _【Rails初心者】ユーザー/管理者を分けて認証機能を作る_
アカウント管理を行える「devise」を使って、「管理者(admin)」と「会員(user)」を作成する方法をまとめてみた

詳しくは、[heartcombo/devise ](https://github.com/heartcombo/devise#configuring-views)のReadmeを参照

## 全体の流れ
1. __`devise`のインストール__
2. __installコマンドとconfigファイルの修正__
3. __`admin`/`user`モデルを作成__
4. __`admins`/`users`コントローラを作成__
5. __`admins`/`users`ビューを作成__
6. __routesの編集__
7. __デフォルトのビューを削除__

### 1.`devise`のインストール
「devise」を「Gemfile」に追加して、インストールします。
~~~:Gemfile
gem ‘devise’
~~~
~~~:Console
bundle install

元記事を表示

React axios RailsAPIを叩いてみる

今回は、ハッカソン形式のインターンでAxiosを使って
Rails APIを叩く機会があったので、その備忘録です!
(少し解説あります!)

# 内容
1. Axiosとは
1. 実際に書いてみた

# Axiosとは
簡単に言うと、APIをサクッと叩いてくれる便利なやつです。
APIを利用するときに、**このパスをGETのメソッドで送ってね**とか
あるのですが、この説明通りに実装できるのがAxiosです。

厳密にはHTTP通信、Promiseの云々カンヌンありますが
気になる人は、[公式サイト](https://axios-http.com/docs/intro)を見てみたり、JS自体を勉強したりしてみましょう〜

今回は、解説&コード全部載せてるので
コードだけ欲しいよ!という人は「コードの全容」に飛んでくださいね!

# 解説
## 導入手順
導入手順は以下のように進めます。
1. `npm` or `yarn`でaxiosをインストール
1. インポート(自分のファイルで使えるようにする)
1. 基本的な設定を作る
1. 便利な関数を作成する

### 1. `npm`

元記事を表示

【Rails】options_from_collection_for_selectの使い方

実現したいこと

ECサイトの注文情報を入力する画面で、
既に登録されている配送先を、セレクトボックスから選択できるラジオボタンを作る。

ざっくり手順

1. form_withでデータを送る準備をする
2. radio_bottunを設置する
3. セレクトボックスに登録済みの住所を選択肢として表示させる

1. form_withでデータを送る準備をする

“`ruby:orders/new.html.erb
<%= form_with model: @order, url: orders_confirm_path do |f| %>
<% end %>
“`

解説

form_withの引数の意味をよく忘れてしまうためここにメモとして残しておきます。
・ model: @order…保存したいテーブルのインスタンス
(Ordersテーブルに新たに情報を追加したいのでコントローラーで@order = Order.newと定義する。)
・ u

元記事を表示

FactoryBotの導入と使い方の基本 [RSpec]

FactoryBotの使い方や導入方法をメモしておきます。
# FactoryBotを使うには
### 1, gemのインストール
“`
gem “factory_bot_rails”
“`
bundle installを実行する。
### 2, ジェネレートする
“`
rails g factory_bot:model モデル名
“`
`spec/factories`というディレクトリが生成される。その中に`モデル名s.rb`というファイルが生成される。このファイルにテストデータを作成していく。
# FactoryBotの使い方(例としてUserモデルを扱う)
### サンプルデータの作成
“`ruby
FactoryBot.define do
#この中に書いていく
factory :user do
first_name { “aaa” }
last_name { “aaa” }
email { “aaa@example.com” }
password { “password” }
end
end
“`
### サンプルデータを呼び出す
“`

元記事を表示

mimemagicのbundle installに手間取った件

## 起きたこと
しばらく昔に触っていたローカルでそのまま動かしていたRuby on Railsプロジェクトを久々に動かそうと`bundle install`したら、以下のエラーが。

“`terminal
Gem files will remain installed in /Users/hoge/projects/hogehoge/vendor/bundle/ruby/2.7.0/gems/mimemagic-0.3.9 for inspection.
Results logged to /Users/hoge/projects/GitHub/hogehoge/vendor/bundle/ruby/2.7.0/extensions/x86_64-darwin-21/2.7.0/mimemagic-0.3.9/gem_make.out

An error occurred while installing mimemagic (0.3.9), and Bundler cannot continue.
Make sure that `gem install mimemagic -v

元記事を表示

【初心者向け】moduleの使い分け

# 執筆経緯
moduleは色々な使い方ができるのは知っていたのですが具体的にどうやって使えばいいのかを
勉強していて気付いたことを共有したいと思い執筆に至りました。

# 対象の読者
– ruby初心者の方
– moduleの使い方がわからない方

上記の方たちに向けて記事を書いていこうと思います!

# moduleの使い方その1
moduleは色々な使い方がありますがまず紹介するのは名前空間としての使い方です!

“`ruby:
class OtukaTakashi
def initialize(from,age)
@from = from
@age = age
end
end

class OtukaTakashi
def initialize(job,talent)
@job = job
@talent = talent
end
end
“`
上記の様に別々に定義されて使い方も異なるclassがあります。
それぞれ違うところで1個のclassのみが使われている内はいいですがある日一緒に使うことになったら
どうやって区別すれば

元記事を表示

ActiveHashの使用例(備忘録)

# ActiveHash(アクティブハッシュ)
**ActiveHash**とは、モデルファイル内に直接記述することで、データベースへ保存せずにデータを取り扱うことができるGemです。
モデルファイルに直接記述したデータに対して、ActiveRecordのようなメソッドを用いることができます。
例えば、都道府県名一覧やカテゴリーなど「基本的に変更されないデータ」を扱うときに便利です。

ここでは例として商品の送り元住所の都道府県登録にActiveHashを用います。

## ActiveHashの導入
Gemfileの最下部に
“`ruby
gem ‘active_hash’
“`
を追記し、`bundle install`を実行します。

## モデルの作成
Itemモデルを作成します。

次に、都道府県名を管理するPrefectureモデル(厳密にはActiveHashを用いたクラス)を作成します。

データベースを利用しないため、手動で
app/modelsディレクトリ内にprefecture.rbを作成します。

まずは、モデルの「Prefectureクラス」を

元記事を表示

Railsのsendメソッドを使うとどう便利になるのか

## 環境
Rails 5.2
Ruby 2.6
Ubuntu 20.4

## 記事
テーブルのカラム名を引用するとき、Railsのsendメソッドを使うとシンプルに記述することができます。
“`user_controller.rb
@user = User.all
User.test(@user)
“`

sendメソッドを使わないときの書き方です。全カラムの先頭に、userを付ける必要があります。userの記述が冗長で、カラムの数が多くなる程、煩わしくなってきます。
“`user.rb
def test(user)
user.each do |user|
ary = []
ary << user.id ary << user.name ary << user.addr puts ary end end ``` 処理結果です。 ``` [1, "tan", "米原市"] [2, "pon", "長浜市"] [3, "mii", "近江八幡市"] ``` sendメソッドを使ったと

元記事を表示

学生4人でチーム開発を行ってみる!

# はじめに
某企業のインターンで4人チーム開発を行い、約2週間でしたがとても有意義な経験をさせていただきました。
せっかく開発力のあるメンバーと出会えたのを、この機会だけで終わらすのは勿体ないと思い、この学生4人で何か作ろうということで、その過程を記録していこうと思います。
初めての記事作成ということで、優しく見守ってくれるとありがたいです。

# 私のことを少し紹介
某大学の法学部で法律を勉強中。ド文系(笑)
縁あってIT企業のインターン、アルバイトを通して、Web開発を学んでいます。
現在は、自社開発志望で就活をしています。
趣味は、映画、アニメ、漫画、憲法、プログラミングです。

# 第一回開発会議にて

### まずはアイディア出し
– 文字ランダム生成アプリ
– 勤怠管理アプリ
– シフト管理アプリ
– プログラミング書籍情報サイト
– お年寄り特化アプリ
– ToDoリスト
– 時間割アプリ
– カレンダーアプリ
– 文字数制限ブログ
– タイピングゲーム
– アップローダー

### Webサイトにするのか、アプリにするのか
ひとまず、チームとして何かを作るということを

元記事を表示

【Rails チュートリアル】AWS Cloud9でRails Serverが起動できないときの対処法【個人的なメモ】

# やりたいこと

・AWS Cloud9で「Rails Server」を起動したい

# エラー内容

ターミナルでRails Serverを実行したが下記のエラーが出てサーバーが起動しなかった。

“`ruby
Cannot render console from 000.000.00.000! Allowed networks: 127.0.0.0/127.255.255.255, ::1
“`
※「000.000.00.000」はIPアドレス

# 調査

・「Rills Cannot render console from」で検索した

・config/environments/development.rb に下記を追加した

“`ruby
Rails.application.configure do

config.web_console.permissions = ‘000.000.00.000’

end
“`
※「000.000.00.000」はIPアドレスなのでターミナルのエラー文で出たアドレスをコピーする

結果として「Cannot render con

元記事を表示

Railsのアソシエーション(has_many、belongs_to)でハマったこと

RailsでWebアプリの開発をしていて、下記のようなテーブルを構築しました。(青線は外部キーの関係)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2840927/91790aa6-e187-e159-7c4d-2b967d3a31f5.png)
この際、各モデルについては、アソシエーションを考慮して、下記のような設定にしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2840927/d4872d12-43fd-8182-df90-7a24a4117a69.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2840927/426fbb57-fa29-f8f1-892e-24f74a8ea6fd.png)
![image.png](https://qiita-image-sto

元記事を表示

herokuビルドでアプリがcrashしてしまった時の解決例

herokuにデプロイした際にビルドは成功したのですが、WEBページを開くと下記の画面になってしまいました。
1週間ほど嵌ったので備忘録として記載します。?
参考にしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2534058/3e3bc773-05ce-3a65-2112-ec106f64817d.png)

# 起点 「Application error」
ビルドが正常に終了したのに、WEBページに「Application error」画面が表示され、「heroku logs –tail」でログを確認してね!とあるのでターミナルで確認する。
以下のログが表示されていた。

“`zsh:heroku logs –tail
2022-09-12T03:32:48.194301+00:00 heroku[web.1]: Starting process with command `npm start`
2022-09-12T03:32:49.916104+00:00

元記事を表示

【作業効率厨】ターミナルでの作業効率がグンと上がるaliasの設定方法と設定例まとめ

# はじめに
現在新卒エンジニア1年目の私が多用している、「alias」による作業効率化を紹介します!
特に、**ターミナル上での作業が多い分野(gitやrailsなど)** でこうかばつぐんでございます。

# aliasとは
alias(エイリアス)とは、日本語で「別名」や「通称」という意味です。
aliasがどういうものかと言うと、一言で言えば**コマンドのショートカット**です。
ターミナルでよく打ち込む長いコマンドを省略して打ち込むことができます!

# aliasの設定方法
aliasは以下のコマンドで設定できます。
“`shell
# aliasの書き方
$ alias {省略形}='{本来のコマンド}’

# 例) git add -Aをgaaと省略する
$ alias gaa=’git add -A’
# 全変更分をstageすることができる
$ gaa

# 例) git checkoutをgcoと省略する
$ alias gco=’git checkout’
# feature-123ブランチにcheckoutすることができる
$ gco feature-123

元記事を表示

rails 7でdevice を使用するとusersモデルに独自で追加したカラムが保存されない。

先日の[watnow](https://github.com/watnows)のハッカソンでアプリを開発をした際にRails 7.0.3を利用して開発しました。
ハッカソンで作ったアプリでログイン機能をrails7かつdeviceで実装するという選択をしたところハッカソンにおいて貴重な2時間を失ってしまいました。その際に得た知識が誰かの役にたてばなと思い記事にさせていただきました。

### 環境
Rails 7.0.3
Ruby 3.1.2

## 状況
Rails 7でdeviceでアカウント登録する際に独自に追加したカラムが保存されないという状況にハマりました。form_withを使用して実装しており、deviceが用意してくれているemailやnameといったカラムは保存されます。

## エラー内容
deviceを使用してuserをcreateすると以下のようなエラーが出ました。
“` terminal:ログ
Started POST “/users” for ::1 at 2022-08-07 16:52:12 +0900
Processing by Devise

元記事を表示

Pumaの再起動に時間がかかる

本番のElastic Beanstalk環境にてRailsアプリをデプロイしたところ、Pumaの再起動に時間がかかりダウンタイムが発生しました。
なぜこの事象が発生したのかがわからず、調査を行ったので記録として残しておきます。

解決していないのでhelp wantedです。

## 前提
#### 環境
– ElasticBeanstalk環境 (Ruby 2.7 running on 64bit Amazon Linux 2/3.4.7)
– EC2インスタンス数:1台 (t3.medium)
– Puma 5.6.4

#### その他
デプロイ時にWeb、DBサーバーのCPU使用率、メモリ使用率に問題がないことから、インフラ側ではなくアプリ側の問題と推測しています。

## 発生した事象
デプロイ終了間際のアプリ再起動時に、Pumaが立ち上がるまでに時間がかかり(6分40秒)、その間にダウンタイム`502 Bad Gateway`が発生しました。

`/var/log/puma/puma.log`より
Pumaを落としたログ(17:56:22)
[![Image from G

元記事を表示

Render.comでRailsアプリをデプロイする方法

Herokuの無料プランが廃止され、代替サービスのRender.comを使ってみました。

https://qiita.com/koki_73/items/60b327a586129d157f38

非常に参考になる記事がありましたので、まずは上の記事を読んでいただくことをおすすめします。
この記事では注意点を補足したいと思います。

# render.yamlの設定

Blueprintsを使用するために、render.yamlを設定します。
その時、`plan: free`が書かれていることを確認してください。
これを設定しないと、Render.comでBlueprint Instanceを作成する時、クレジットカードを要求されます。
“`yaml
# render.yaml
databases:
– name: rails7_sample_staging
databaseName: rails7_sample_staging
user: rails7_sample
region: singapore

services:
– type: web

元記事を表示

[Rails]selectフォームにenumのリストを表示する2つの方法

すんごい基礎的な内容なのですが、2通りのやり方に出会ったので整理したかったのと、地味なとこでハマったので備忘録。

## やりたいこと
Postモデルにstatusというenumがあるとする。

“`ruby
class Post < ApplicationRecord enum status: { active: 10, inactive: 20 }, _prefix: true end ``` これをこういう感じ↓で表示したい。 ![スクリーンショット 2022-09-12 12.09.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/645077/b0e3c242-c7da-f570-f417-f87c24cf5242.png) htmlはこう。ブラウザで見える文字列とvalue属性を渡してあげたい。 ```html

OTHERカテゴリの最新記事