Rails関連のことを調べてみた2023年01月18日

Rails関連のことを調べてみた2023年01月18日

ページネーション

# ページネーションとは
– ページを複数に分割することができるもの
– レイアウトを調整したるするのに便利
– グーグルのページなどの下部に表示されているやつ
![スクリーンショット 2023-01-18 3.29.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2904183/aea865c8-9b12-0c31-6df0-63d9048125ab.png)

# 実装方法
– kaminariというgemを使用する

“`:Gemfile
gem ‘kaminari’,’~> 1.2.1′
“`

“`
$ bundle install
“`

– 設定ファイルを作成する
下記コマンドで作成されたフォルダの中にページネーションの部分のhtmlが記述されているので変更を行う際は適宜修正する
“`
$ rails g kaminari:config
“`

– kaminariのテンプレを作成
“`
$ rails g kaminari:views default
“`

– c

元記事を表示

deviseをアップデートしたらomniauthエラーで詰まった

### はじめに
deviseをアップグレードするために、omniauthのバージョンも同時にアップグレードしたら一部のコールバックがnilになってハマってしまったので共有します。

### やったこと
– device, omniauthをアップグレードした
“`diff_ruby:Gemfile
– gem ‘devise’, ‘4.4.3’
– gem ‘omniauth’, ‘~> 1.9.0’

+ gem ‘devise’
+ gem ‘omniauth’
“`

“`diff_ruby:Gemfile.lock
– devise (4.4.3)
+ devise (4.8.1)

– omniauth (1.9.2)
+ omniauth (2.1.0)
“`

### 発生した問題
oauth認証で必要な値が`nil`になってしまった。
“`ruby
[1] pry> request.env[‘omniauth.auth’]
=> nil
“`

### 解決方法
– こちらにも同様の現象が起きているとissueがあがっていたのを発見。

https://g

元記事を表示

実務未経験者がRailsで予約管理アプリを作成しました!(simple_calendar)

アプリ概要

ヘッドスパスクールの授業を予約するアプリを作成しました。
イメージとしては美容室などの予約アプリのようなシステムです。

まず教師側が授業可能な日程を登録し、その日程の中から生徒が日程を選択し、授業を予約するという使い方です。

https://jsmc-machido.com/

https://github.com/keiino0425/JSMCreserveapp

作成背景

プログラミングの学習を進めていたところ、知人がヘッドスパスクールを始めたいという話をしていたので必要なシステムがないかヒアリングしたところ、予約を管理するシステムが必要とのことだったので作りました。

使用イメージ

講師側

講師用のマイページで仮予約や予約を確認できます。また、仮予約は確定もしくは削除すると生徒にメールが自動送信されます。

![スクリーンショット 2023-01-17 0.00.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws

元記事を表示

【個人開発】キャンプ旅行に持っていくキャンプ道具を共有するアプリ – Camplet –

# はじめに

初めまして@asaAxisと申します。
この記事は初学者が初めて個人開発したWebアプリの紹介記事です。
Campと旅行のPamphletの意味を込めてCampletという名前にしました。

アプリURL : http://52.69.152.68/
旅行の際にキャンプ道具を共有する 大変さから解放されます!

# 開発の経緯

![開発経緯説明.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2881856/e485df4f-8432-efa7-05f3-f03eeae416ed.png)

キャンプをやったことがない人でも、
**持っていく道具が多そう…
何を持って行けば良いの?** とか…

そういった、ことを減らすためにこのアプリを開発しました。
旅行の際にキャンプ道具を共有する大変さから解放される!
をコンセプトに開発をいたしました。

# 開発環境
* Ruby 3.0.1
* Ruby on Rails 6.1.7
* PostgreSOL 14.5

# 主な機能

元記事を表示

メールアドレスの長さのバリデーションをかける

# メールに最大長はあるのか?
* メールアドレスの長さは“`254文字を超えてはならない“`
* RFC5321などを見ればメールアドレスは320文字まで許容できそうだが、RFC2821のメール送信プロトコルの仕様からは、区切り文字も含めて256文字以内となっている。区切り文字も含めるということは、キャリッジリターンとラインフォールドも含めていうことなので、実質、“`メールアドレスとして許容できるのは、254文字まで“`となる。

### 出典
https://blog.anderiens.com/entry/length-of-mail-address#:~:text=%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%81%AE%E9%95%B7%E3%81%95%E3%81%AF254%E6%96%87%E5%AD%97%E3%82%92%E8%B6%85%E3%81%88%E3%81%A6%E3%81%AF%E3%81%AA%E3%82%89%E3%81%AA%E3%81%84

htt

元記事を表示

form_withのscopeは何をしているのか

## 環境
Rails 5.2

## 内容
form_withのパラメータのscopeはどのような動きをしているのか確認してみました。結論を言うと、scopeを指定すると、ViewからControllerにPOSTするとき、Viewに入力した値が、paramsハッシュにセットされます。

更新処理をするとき、form_withのパラメータには、通常、modelがよく使われます。下記の書き方だけで、newのときは画面に入力した値をcreateメソッドにPOSTで転送し、editのときはupdateメソッドにPUTで転送します。また、editのときは、idがparamsハッシュにセットされるため、コントローラの中でparams[:id]とすると、idの値を取得することができます。

HTTPのどのメソッドを使って転送し、どのコントローラのどこのメソッドに入ってくれるかの判断は、Railsが裏側で自動的に行ってくれます。この辺が、Railsの便利なところでもあり、また、初学者が難しいと感じるところでもあろうかと思います。
“`_form.html.slim
form_with model

元記事を表示

[Rails]Railsアプリケーションの雛形作成

概要

Railsアプリケーションの雛形作成と削除方法を簡単に説明します。
拙い文章で申し訳ございません。
記事の記述方法や内容に不備等ございましたら、指摘してくださると幸いですm(-_-)m

# 環境
IDEはAWSのcloud9を使用しています。
Rubyのバージョンは3.1.2
Railsのバージョンは6.1.7

アプリケーションの雛形作成方法

結論としては、「rails new」コマンドを実行します。
記述方法は以下の通りです。

“`
rails new アプリケーション名
“`
例として、「SNS」というアプリケーション名で作成する場合は
“`
rails new SNS
“`
となります。

rails newを実行する際に注意する点が2点あります。
– スペルミス
– 半角スペースの場所を間違えない

特に2点目の「半角スペースの場所を間違えない」というのは、どのような場合か

例えば、先ほど例同様に「SNS」というアプリケーションを作成した際
“`
rails newSNS
“`
と入

元記事を表示

ymlとは(使い方も少し)

# 疑問
* .ymlとは?
日本語に翻訳に使ったファイル。
初めて使った一応触りだけでも理解をしておきたい。

# YAML【YAML Ain’t Markup Language】YMLファイル / .ymlファイル
* YAMLとは、“`何らかの構造を持つ“`データ集合を簡素な“`文字列の並びとして表記するための記法“`を定めた“`データ形式の一つ“`。
“`ソフトウェアの設定ファイルの記述や異なるソフトウェア間のデータ交換などでよく用いられる。“`

# 出典
https://e-words.jp/w/YAML.html#:~:text=YAML%E3%80%90YAML%20Ain’t%20Markup,%E3%81%AA%E3%81%A9%E3%81%A7%E3%82%88%E3%81%8F%E7%94%A8%E3%81%84%E3%82%89%E3%82%8C%E3%82%8B%E3%80%82

* * ファイルの書き方ルールだよ
* point構造化されたデータを表現できるよ
* point「YAML Ain’t a Markup Languag

元記事を表示

railsのconfigとは

# 疑問
* config/application.rb内で“`config. …“`と書いている。
この“`config“`とは何なのか?知りたい。

# 設定ファイル(config)
設定ファイルについて

### 説明
Railsでは、config/以下の設定ファイルによって設定を変更

### 特徴
“`「config.パラメータ名 = 値」“`の形式で設定
設定を反映するには、“`サーバの再起動が必要“`
文字コードは、UTF-8

### 主な設定ファイル
説明
application.rb “`すべての環境で共通の設定“`ファイル
environment/ 環境ごとの設定ファイルを格納するディレクトリ
development.rb 開発環境での設定ファイル
test.rb テスト環境での設定ファイル
production.rb 本番環境での設定ファイル
initializers/ その他の初期化処理や設定情報などを格納するディレクトリ
infiections.rb 単数形・複数形のルールを設定
mime_type

元記事を表示

updateアクションを使用しても更新されない

# はじめに
某オンラインスクールで学習中の者です。自分が体験したエラーを
アウトプットの意味も込めてQiitaに投稿しておきます。

# 前提要素
– editアクション完了
– updateアクション完了
– form要素はrenderメソッドを用いて`new.html.erb`、`edit.html.erb`に使用している。

# エラー内容

編集ページより投稿を編集したところ
newアクションが適応されてしまう。(エラー画面無し)

そのため一覧にどんどん投稿が増えていってしまう。。。

# 問題解決
editのルーティングを間違えていた。
パスを修正することで解決した。

# 解決過程
~~~ruby show.html.erb
<%= link_to "編集する", edit_○○○○○○_path %>
~~~
↑ `editパス`に`@○○○○○○.id`とidの指定をしていなかった。

そのため、idを指定できていなかった為、既にある投稿を読み込むことができず
newアクションのform要素からcreateアクションを送信する形となった。

元記事を表示

Ruby on RailsでDBを途中からmysqlに変更したいときに変更する場所

# はじめに
当記事はRuby on Railsでアプリケーションを作成している途中でDBを変更したいと思ったときに変更する場所を記します。
今回はSQLiteからmysqlへ変更します。

また、最初からmysqlで始める場合は以下のコマンドで`new`することでmysqlで開始することができます。

“`terminal:terminal
rails new アプリケーション名 -d mysql
“`

# 環境

“`terminal:terminal
$ ruby -v
ruby 2.7.3
$ rails -v
Rails 7.0.4
mysql -version
mysql Ver 8.0.31
$ bundle -v
Bundler version 2.1.4
“`

# 前提条件

* DBの設定が完了していること。(mysqlだと最低限、rootユーザーでアクセス可能である。)

# DB変更

1. Gemfileに以下を追記する。

“`:/Gemfile
gem “mysql2”
“`
1. terminalから`Gemf

元記事を表示

RailsのDeviseによる認証機能にカラムを追加する。

# Railsの認証関連データを増やしてみよう。

Railsの認証機能モジュールである、Deviseを使用すると簡単にRailsに認証機能を導入できます。
このモジュールでは以下のデータをデフォルトで扱います。

– id
– email
– encrypted_password
– reset_password_token
– reset_password_sent_at
– remember_created_at
– created_at
– updated_at

これに「name」「comment」「birthday」を追加してみましょう。

## 手順

以下の3ステップで実現できます。

1. マイグレーションデータの作成
2. マイグレーションの実行
3. アプリケーション設定の変更

## 1. マイグレーションデータの作成

“`shell
rails g migration AddCommentAndBirthdayToUsers name:text comment:string birthday:date
“`

これによってマイグレーション

元記事を表示

railsのコンポーネントを構成する

疑問に思っているところは、
* デフォルトのロケールを変更するのに“`config/application.rb“`をなぜ使うのか?

# config/application.rbとは

3 Railsコンポーネントを構成する

一般に、Railsの設定作業には、“`Rails自身の設定“`と、“`Railsのコンポーネントの設定“`があります。“`config/application.rb“`および
“`環境固有の設定ファイル“`(config/environments/production.rbなど)に設定を記入すると、
Railsの“`すべてのコンポーネントにそれらの設定が反映“`されます。

たとえば、config/application.rbファイルに以下の設定を追加できます。
“`rb
config.time_zone = ‘Central Time (US & Canada)’
“`
“`上はRails自身のための設定“`ですが、個別のRailsコンポーネントに設定を反映するときにも、
以下のようにconfig/applicatio

元記事を表示

エラーメッセージを日本語化する

# 日本語化の方法
* “`rails-i18n“`gemを使って日本語にするらしい。
### 出典
https://zenn.dev/machamp/articles/rails-validation-message#2.rails-i18n-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E6%97%A5%E6%9C%AC%E8%AA%9E%E5%8C%96%E3%81%99%E3%82%8B

https://qiita.com/shimadama/items/7e5c3d75c9a9f51abdd5

* p313 Railsでよく利用する辞書データは“`rails-i18n“`というgemで利用できます。
### 出典
https://gihyo.jp/book/2020/978-4-297-11462-6

### 気づき
このgemをインストールをしないと翻訳できないのだろうか?

# I18nの属性
“`rb
rb(main):049:0> I18n.load_path
# カスタム訳文ファイルの場所を示す
=>
[“/*******

元記事を表示

バリデーションで設定する様々な制限

バリデーションの際に、制限したいことをどう設定すれば良いのか忘れがちなので記録しておきます。

## バリデーションの設定場所・設定方法
各モデルのモデルファイルに設定内容を記述する。
例えば、タイトルと本文を空白では投稿できないようにしたいときは
~~~ruby:models/books.rb
class Book < ApplicationRecord validates :title, presence: true validates :body, presence: true end ~~~ のように記述する。 ### ★文字数制限 lengthオプションを使う。 #### 文字数の上限・下限を設定する 最低文字数の制約を設ける場合はminimum、最高文字数の制約を設ける場合はmaximumを使う。 ~~~ruby validates :body, presence: true, length: {minimum: 10, maximum: 200} ~~~ 上記の場合は、本文が10文字以上200文字以下となる。 別の書き方もできる。 ~~~ruby validate

元記事を表示

Ruby on Railsを基本からまとめてみた【エラーに対するトラブルシューティング①】

railsで『API』を作成しようとしたら、下記のエラーが表示。

“`
Rails is not currently installed on this system. To get the latest version, simply type:

$ sudo gem install rails

You can then rerun your “rails” command.
“`
#### 解決方法

下記のコマンドをシェルに打ち込んだら、解決したので記載。

“`
export PATH=”$HOME/.rbenv/bin:$PATH”
“`
または

“`
export PATH=”$HOME/.rbenv/shims:$PATH”
“`

#### 原因

シェルを変えたことで、パスを設定し直さなければならないのを忘れていたことが原因とのこと。
rbenvのpathが無くなったことで、macに標準でインストールされているrubyのgemを確認してrailsのgemが無いとエラーを出していたらしい。

## 参考サイト
[Shellをzshにし

元記事を表示

Railsに認証機能(devise)を導入する。

# Devise to Rails

Railsに認証機能(devise)を導入する。

deviseとはrails用の認証モジュールです。
これを利用することで簡単にrailsで認証機能を実現できます。

認証機能とは、いわゆる、ログイン・サインイン処理のことです。

## 環境情報

自分の環境情報です。

| 機能 | バージョン |
| —- | —- |
| Ruby | 3.1.3 |
| Rails | 7.0.4 |
| Node | 18 |

## 手順

以下の手順で導入できます。

1. Gemfileの編集とモジュールのインストール
2. deviseモジュールのセットアップ
3. モデルの生成
4. マイグレーション
5. ビューの設定

## 1. Gemfileの編集とモジュールのインストール

Gemfileに以下の行を追加します。

“`Gemfile
gem ‘devise’
“`

そのあと以下のコマンドを実行してモジュールをインストールします。

“`shell
bundle install
“`

元記事を表示

Amazon S3 Presigned URLを使用して、Herokuに大きなファイルをアップする方法

# はじめに
こんにちは!
SalesforceやHerokuの導入・開発を行っている株式会社Prazto(プラート)の代表をしております[芳賀](https://twitter.com/hagasatoshi1 “芳賀”)と申します。

本日は、Herokuで構築した顧客向けポータルにサイズの大きなサイズのファイルをアップする場合の留意点と、S3 Presigned URLを使用したその留意点の回避方法についてご紹介をいたします。

# 記事の要約
– 「インフラエンジニアがいらないPaaS」Herokuの特徴と留意すべき事項
– Herokuのポータルに大きなファイルをアップする際の留意点
– S3 Presigned URLを使用すると、無理なく実装することが可能
– Heroku Connectを使用してSalesforceと連携する場合にも活用できる

# 「インフラエンジニアがいらないPaaS」Herokuの特徴
まず本題に入る前に、Herokuの特徴について簡単におさらいします。

数多くあるPaaSの中でのHerokuの特徴のわかりやすい表現として、**「インフラエンジ

元記事を表示

RailsでBootstrapとscssを使う。

# Railsでscssとbootstrapを使おう?

Ruby on Railsでscssとbootstrapを使用して簡単にデザイン関係のセットアップをしましょう?

## 環境情報

| 機能 | バージョン |
| —- | —- |
| Ruby | 3.1.3 |
| Rails | 7.0.4 |
| Node | 18 |

## 手順

1. Nodeのインストール
2. Gemfileの編集
3. パッケージのインストール
4. bootstrapのインポート

## 自分の環境に関する情報

Dockerを使っています。
Dockerfileは以下の通り。

“`Dockerfile
FROM ruby:3.1.3

RUN apt update -qq && apt install -y postgresql-client nodejs
WORKDIR /myapp
COPY Gemfile Gemfile.lock ./
RUN bundle install
COPY . .

EXPOSE 3000

CMD [“rails”, “s

元記事を表示

resourcesメソッドとは・親子関係の注意点

# resourcesメソッドとは
## 基本の使い方
ルーティングを一括自動生成してくれる機能。
コントローラーの以下の記述をすると、自動で作ってくれる。
~~~ruby
resources :モデル名
~~~

~~~ruby:routes.rb
resources :books
~~~
自動作成してくれるルーティングは以下。

new(投稿を作成する画面)
show(投稿の詳細画面)
index(投稿の一覧画面)
edit(投稿の編集画面)
create(投稿作成)
destroy(投稿削除)
update(投稿更新)

## onlyオプション
生成するルーティングを限定することが出来る。
~~~ruby:routes.rb
resources :books,only:[:new,:create,:index,:show]
~~~

## 親子関係
例えば、投稿内容にコメントをつける機能を実装したい場合、
~~~ruby:routes.rb
resources :books,only:[:new,:create,:index,:show] do
resources :comm

元記事を表示

OTHERカテゴリの最新記事