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

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

【Rails】コメントの編集, 削除機能実装(form_with)

# はじめに
記事投稿アプリの記事に対して、コメントを作れる機能を実装した。
さらに、編集と削除ができるようにしたい。

**完成図**
![完成図.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2684787/617104a7-bfca-fd77-79d2-521bd15ec3a7.gif)

# 前提
下記は作成済み
投稿機能
ユーザーテーブル
コメントテーブル
コメントコントローラー createアクション

下記テーブルは作成済み。
| No | 項目 | 内容 |
|—:|————-|————|
| 1 | OS | Mac |
| 2 | Ruby | 2.6.3 |
| 3 | rails | 6.0.4 |

# ポイント

・コメント投稿機能とeditテンプレートを同じパーシャルを適用することで、dryにする。
・post_

元記事を表示

Ruby 練習問題5 ~ if → unlessへの書き換え ~

こんにちは、プログラミング初学者”fujitacoma”です!

今回は、Ruby練習問題シリーズの5回目です。
unless文を使用した条件式の記述問題ですね。

それでは早速始めます!

# 問題
次のif文をunlessというメソッドを用いて書き換えてください。

“`ruby
if a + b > 0
puts “計算結果は0より大きいです”
end
“`
## ヒント
### unless
unlessとはifとは逆で、条件式がfalseの場合に処理が実行されます。

__ifを使用した場合__
“`ruby
if 条件式
条件式がtrueの時に実行する処理
else
条件式がfalseの時に実行する処理
end
“`
__unlessを使用した場合__
“`ruby
unless 条件式
条件式がfalseの時に実行する処理
else
条件式がtrueの時に実行する処理
end
“`

# 解答と解説

### 模範解答
“`ruby
unless a + b <= 0 puts "計算結果は0より大きいです" end ``` ###

元記事を表示

【Rails7】【Auth0】rails7 にAuth0を導入して認証機能を作成する

## はじめに
未経験からエンジニアに転職して、3ヶ月ほど経つエンジニアです。
業務にあたりながらも、小規模なアプリを作って楽しんでいます。
![自己紹介.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916052/2931f4ef-8d29-72a6-8705-066ddde51004.jpeg)

rails7で作成されたアプリにAuth0を導入します。
rails6+Auth0の記事はあるのですが、rails7でAuth0を導入している記事はほぼ見かけないです。
基本的には公式のクイックスタートを踏襲すればOKです。
一部修正が必要なので、そこを解説していきます。

なお、↓で作成したアプリにAuth0を導入していきます。

https://qiita.com/AGO523/items/32129869f5d4a23f2133

rails7アプリがないよ、、という方も参考に作成してみてください!(30分くらいで作れます)

## Auth0に登録する
https://auth0.com/jp/s

元記事を表示

【Rails】フォロー・フォロワー機能

# 開発環境
Rails 6.1.4
ruby 2.6.3

# 前提条件
– devise導入

# 目次
– モデルの作成
– アソシエーション
– メソッドの作成
– コントローラー作成
– ルーティング
– View作成

## モデルの作成

まずはRelationshipモデルを作成します。
RelationshipモデルはUserモデルの中間テーブルにあたります。
なぜなら、フォローするのもフォローされるのもユーザーで、`多 対 多`の状態になるからです。

カラムは、下記の通り定義します。

`follower_id` : フォローしたユーザー
`followed_id` : フォローされたユーザー

ここで`user_id`を使わないということが大切です。
RelationshipモデルはUserモデルの中間テーブルになるため、
どちらもidにはユーザーのidが入ります。
つまり、ここで`user_id`を使用してしまうと
判別がつかなくなってしまうため、`user_id`は使用しません。

それでは、ターミナルでコマンドを実行していきます。

“`ruby:ターミ

元記事を表示

仮想環境VirtualBox(Ubuntu20.04)でRails環境構築

# 概要
テキストを見ながらRails環境を構築しようとしたら
サーバー起動までの所で色々ハマってしまったので自分用に記録しておきます。
windows10 VirtualBox6.1 ubuntu 20.04 で構築しました。
windowsからubuntuへのコピペ機能を使える様にしてから始めると楽です。

# 参考にした書籍
[現場で使える Ruby on Rails 5速習実践ガイド](https://www.amazon.co.jp/%E7%8F%BE%E5%A0%B4%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B-Ruby-Rails-5%E9%80%9F%E7%BF%92%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4%E3%83%89-%E5%A4%A7%E5%A0%B4%E5%AF%A7%E5%AD%90/dp/4839962227/ref=sr_1_6?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=217OVEDAHL3SK&keywords=rails&q

元記事を表示

マイグレーションファイルを修正する方法

– アプリ制作途中にマイグレーションファイルの修正が必要になった。なんとか修正することができたので忘備録として記事にします。
## 経緯
– `ログイン機能`を実装するため`devise`をインストール
– 不要な機能をコメントアウトし忘れ`rails db:migrate`を実施。
– 実施後に不要な機能を削るため`マイグレーションファイル`の修正に取り掛かる。

まずは`マイグレーションファイル`の修正について検索し、次のコマンドを実施
“`:ターミナル
rails db:rollback
“`
すると以下の様にエラーが発生
“`
Running via Spring preloader in process 89570
== 20220715104214 AddDeviseToUsers: reverting =================================
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

Active

元記事を表示

[Ruby] 複数行テキストのセル・空白行が含まれるCSVから正確な件数を取得する

# 背景
以下のようなシステムの作成中に、登録件数が正確に通知されないことがあった。
* CSVファイルからデータベースにデータを登録したい
* 1行につき1件として、複数行のCSVファイルを読み込む
* データがCSVからデータベースに登録されたら、登録件数を取得してSlackで管理者に通知する

# 問題
以下を参考に、`.count`で`”\n”`の数で改行をカウントして行数を取得していたが、
登録件数が倍になって通知されることがあった。
https://rubytips86.hatenablog.com/entry/2014/03/23/091949

# 原因
* 複数行のセルがあると、セル内の`\n`もカウントされてしまう
* 空白行があると件数としてカウントされてしまう

# 解決法
csvfile: 件数を取得したいCSVファイル
row_size: CSVファイルの列数
“`ruby
column_length = File.read(csvfile).gsub(/,{#{row_size-2},}\r\n/,”).scan(“\r\n”).length
“`

元記事を表示

用件定義の正しさを取るのか、開発効率(コスパ)を求めるのか。

# 効率よりも正しくあるべき
理想、「効率よりも正しくあるべき」は理想である。

## 最速の開発、最高のコスパは 理想と真逆。
> 営業やマーケサイドから XX をやってほしいと言われ
> その場で仕様を考え、ざっとインパクトを出した上で開発着手

おそらくこれは最速で、最もコスパの良い開発方法だろう。
小さな開発チームにおいて、このように開発が進むことが多くある

## コスパのために犠牲にしていること
上記の開発手法はコスパが非常に高い。
無駄が一切なく、必要最低限の工数で理想的なプロダクトを最短で作れる。

### コスパとのトレードオフは必ず存在する
何もかもが`必要最低限`なので考慮出来て居ない事は当然ある。

– 意思決定者の不在(営業と実装担当者2名で決めるので事業としての判断ではない)
– リスク、ハレーション、社内連携ミス
– インパクト考慮、KPI未策定、蓋然性検討
– 計測方法、撤退基準、改善プラン、今後の展望

## 正しさをどこまで求めるのか
チームとしてどこまで正しくあるべきなのかは明確に定義しなければならない。

### 【定義すべきもの】
* 用件定義

元記事を表示

ridgepole動作まとめ

1. [DBがないとエラー](##DBがないとエラー)
2. [空のDBでexportしても何も起きない](##空のDBでexportしても何も起きない)
3. [apply](apply)
4. [変更がない場合はNochange](##変更がない場合はNochange)
5. [差分がない時は何も起きない](##差分がない時は何も起きない)
6. [カラム削除](##カラム削除)
7. [カラム追加](##カラム追加)
8. [ただ単に`.schema`を削除した場合は`Schemafile`の`require`でエラーになる](##ただ単に`.schema`を削除した場合は`Schemafile`の`require`でエラーになる)
9. [ファイル削除した場合でもDROPされずに`Nochange`になる](##ファイル削除した場合でもDROPされずに`Nochange`になる)
10. [DROPの場合`.schema`が残っていても`Schemafile`の`require`を削除しただけでDROPされる](DROPの場合`.schema`が残っていても`Schemafil

元記事を表示

Rails×Next.js×Auth0で認証機能をサックと開発する

## はじめに

今回はRailsのAPIモードとNext.jsを利用したSPA構成に、Auth0で認証機能をサクッと開発していきます。

Auth0は導入が簡単かつチュートリアルやドキュメントが豊富なので、初めての人でも簡単に認証機能を実装することができます。

直近で自分が行った新規開発案件でもAuth0が採用されることが多かったです。

なおAuth0についての詳しい解説は本記事では割愛するので気になった方は、こちらを確認してみてください。

https://dev.classmethod.jp/articles/auth0-architecture/

またAuth0とFirebase Authenticationといった他の認証機能との比較記事はこちらで確認してみてください。

https://qiita.com/yutaro50/items/55455fe34385852d5ac0

本記事で解説する内容はAuth0の公式ドキュメントに沿って解説していきます。

https://auth0.com/docs/quickstart/spa/react/01-login

ht

元記事を表示

Rails CRUD処理実装のアプリを立ち上げ~Git hub管理まで

アプリを作成する度に未だに毎回検索しているのでここの復習も兼ねてまとめます。
プログラミング初心者向けの記事となります。

# 開発環境
– `Rails`
– `Ruby`
– `git`
– `Git hub`
# 手順
– `Rails`でアプリ作成
– `git`で`ローカルリポジトリ`を作成
– `Git hub`で`リモートリポジトリ`を作成
– `ローカルリポジトリ`に`リモートリポジトリ`を追加する
# まずはRailsでアプリを作成
“`:ターミナル
rails _6.1.6_ new アプリ名 -d postgresql -T
cd アプリ名                                                                     
rails db:create
“`
### コマンドの解説
__Q:なぜ`Rails`のバージョンは`6系`指定?__
A:最新の`Rails`のバージョン`7`はまだ出たばかりで不具合などあり,変更点も多々あるため`6系`最新バージョンを指定しています。

__

元記事を表示

rails環境構築の全体像と、各ツール・コマンドの意味、役割について〜Command Line Tools for Xcodeとhomebrewとrbenvとrubyとbundlerとgemとrailsと…!〜

railsの学習を始めて数ヶ月経ちましたが、環境構築について、写経のように何も理解できないまま行ってしまっていたので、各ツール、プログラムの全体での立ち位置を意識しながら、それぞれがどの立場で何をやっているのか、またその中で感じた疑問をまとめてみました。

初学者の方が環境構築するにあたって、今何をしているのかわかる地図のようになればいいなぁと思っております。
誤り等にお気づきの方はご連絡をお願いいたします。

■想定読者
①:複数回環境構築を行い、やり方はわかったが、何をしているのか分からない初学者の方々
②:まさに①である筆者の拙い記事を、温かい目で校正していただける先輩エンジニアの方々

# 全体イメージ
※あくまで環境構築の一例。
(例えば、rbenvがなくてもrubyのインストールはできるし、bundlerがなくてもgemのインストールは可能。)
### イメージ図
![全体イメージ_rails環境構築.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2710784/5c01e0aa-dbc

元記事を表示

raise_conflict_error enumに定義できない命名について

## 経緯
`Ruby on Rails`でアプリ作成中にenumでこのような定義し、`rails c -s`で動作確認をしたところエラーが発生しました。
今回の記事ではこのエラー発生原因と解決方法までを残します。同じプログラミング初心者へのヒントになれば幸いです。
“`rb:model
class Present < ApplicationRecord with_options presence: true do validates :present_name validates :present_score validates :present_review end enum present_score: { poor: 1, average: 2, good: 3, verygood: 4, excellent: 5 } end ``` ```:ターミナル ~~~省略~~~~ `raise_conflict_error': You trie

元記事を表示

Byebugについて

# はじめに

Railsでは最初から開発環境とテスト環境でByebugが使えるようになっているという記事を見かけまして、デ

バッガがやりやすくなるかなと思い試してみました!

勉強がてらByebugについてまとめてみた記事です。

# 具体的な内容

RailsにはGemファイルに標準でByebugが最初から入っています。

byebugとpry-byebugがあり、微妙に違います。irb上で動くのがbyebugでpry上で動くのがpry-byebugです。

# irbとは

IRBはInteractive Rubyの略です。対話形式でプログラムを実行できるコマンドです。

Rubyのコードの動作確認をしたいときに使います。ちょっとした短いコードの動作確認をするときに便利ですね。

# pryとは

Pryとは、RubyのirbのようにRailsのコンソールでメソッドなどを使えることができるようになる機能です。

# byebugとは

byebugとは、デバッグツールの1つです。Railsにはデフォルトでインストールされています。
イン

元記事を表示

railsのmigrationfileについてのメモ

# 概要
railsのmigrationfileは変更したいことを
ファイルの名前に設定し実際の変更を加える
## なぜそのようなことを行うのか?
チーム開発においてmigrationfileは
共有されるものであるため、
自分がなにをやったのかということをわかりやすくするため
### 気をつけるべき点
変更を加えてからもとに戻そうとして
rails db:migrate:resetをしてしまうと
一緒に開発している人との環境に
齟齬が生じるので
概要に記したやり方で実装しないと後々面倒なことになる
#### 上記を踏まえて今日自分が学んだこと
まだチーム開発は経験せず一人で実装を進めているが
チーム開発の学習にいずれは入るため、
上記のことを考えすぎて
一度`rails db:migrate`したmigrationfileはいじれないと思いそこを変更しないまま
ファイルの名前だけ変えた中身が同じファイルを`rails:db:migrate`しようとしてエラーが出てしまい、
メンターの方に聞いたとき
今は個人でやってるからまだやらなくて大丈夫と言われあっさり解決した。
原因はメンター

元記事を表示

ActiveRecordのorderをハッシュで指定した際に、syntax errorが出る

# 発生した問題
以下のように[Rails ドキュメント](https://railsdoc.com/page/model_order)に従って記述したところ`syntax error`出た.

“`ruby
Page.order(:category_id :asc)
# SELECT “pages”.* FROM “pages” ORDER BY category_id ASC
“`

# 解決策
以下のように直したら実行された。ドキュメントの誤植なのかもしれない。

“`ruby
# 動かない。rails docに書いてある方法
Page.order(:category_id :asc)

# 動く
Page.order(category_id: :asc)
“`

元記事を表示

うんこーどを直したい

# はじめに

筆者転職活動中に久々に書かないとなと思うコードに遭遇してしまい筆を取る次第。

この記事のうんこーどがやりたいことを簡単に言うとINPUTに対して該当するプランがあるのか?他に予約がないか?をチェックして通ったら合計金額を返すだけのコードである。皆で仲良く直しましょう。

## お題

皆さんはうんこーどに遭遇したことはありますか?私はあります。
とりあえず何も考えずに以下のコードを御覧ください。

“`
class HogeController < ApplicationController def index room = Room.find(params[:room_id]) plans = Plan.where(room_id: params[:room_id], status: true) if plans.count == 0 || params[:started_at].nil? || params[:ended_at].nil? return render json: {} end starte

元記事を表示

Rails で rake を追加したのに実行できない ( 拡張子が間違っていた )

rake の拡張子は rake です。

x `lib/tasks/example.rb`

o `lib/tasks/example.rake`

# エラー

“`
Don’t know how to build task ‘example’ (See the list of available tasks with `rails –tasks`)
“`

# チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

# メンター受付

https://menta.work/user/5694

元記事を表示

社内部活制度でgemのコードリーディング会を実施した話

# 前置き

こんにちは。株式会社Relicのyamashitaというものです。
弊社にはさまざまな部活動がありまして、ruby部、php部、aws部…音楽部、お金部、などなど。。
社員は自由に部活動を選択でき、そのテーマに興味のある仲間と交流しながら技術を高め合う事ができます?

あ、最後の2つは技術の話ではなかったですね…。失礼しました。

## ruby部について

私は参加してから1ヶ月ほどになります。

週に一度30分ほどの集まりが催され、rubyをテーマにしたお題について議論をするのがデフォルトです。
いまは3名のエンジニアが運営ですが、つよつよなruby大好き業務委託さんも、この勉強会に大いに貢献してくださっています。運営の皆さん、いつもありがとうございますmm

## トライしてみたこと

部活動の話とは別件なのですが、プロジェクト内で既存のテーブルの命名を見直す会をしていたときのこと、
メンターに「たまにはOSSのコードも読んでみるとよいょ」と言われてmastodonのスキーマをほいっと渡されました。
(データの持ち方に応じてどんな命名をしているか勉強になったので

元記事を表示

change_column_defaultのrollbackを流すには

### 環境
– Rails 5.2
– Ubuntu20.4

### 内容

マイグレーションファイルで、**test1sテーブル**の**test1_codeカラム**に、デフォルト値として **「 “”(空白)」** を設定する記述をします。
“`xxx.rb
def change
change_column_default :test1s, :test1_code, “”
end
“`

マイグレーションを実行すると、正常に実行されました。
“`
$rails db:migrate
“`

schema.rbを見ると、デフォルト値が確かに反映されています。
“`shema.rb
create_table “test1s”, force: :cascade do |t|
t.string “test1_code”, default: “”
t.datetime “created_at”, null: false
t.datetime “updated_at”, null: false
end
“`

マイグレーションファイルをロールバ

元記事を表示

OTHERカテゴリの最新記事