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

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

ruby returnの返り値が複数の場合

はじめに

メソッド内の処理後、返り値が複数になる場合はどうなるのか気になったので調査し、検証してみました。

returnを使わない場合の返り値

“`test.rb
def return_test(value)
sum_a = 5
sum_b = 10
sum_c = 15
sum_a *= value
sum_b *= value
sum_c *= value
end

value = 10

x = return_test(value)

puts x
“`
結果
“`
=> 150
“`
:::note warn
メソッドの最後の処理結果しか返ってこない
:::

returnで返り値を複数指定した場合

“`test.rb
def return_test(value)
sum_a = 5
sum_b = 10
sum_c = 15
sum_a *= value
sum_b *= value
sum_c *= value
return sum_a,sum_b,su

元記事を表示

rails ヘルパーメソッドを使ってviewファイルを整える

はじめに

ヘルパーメソッドを自分で定義することについて学んだので学習したことをまとめて記述していきます。

ヘルパーメソッドを使うメリット

railsでビューファイルに対して行われる処理に関して繰り返して使用するようなメソッドはヘルパーメソッド(ビューファイルに対して使用するモジュール)を自分で定義して使用するとビューファイルの可読性を良くすることができ、また保守などの面から見ても修正しやすくなるメリットがある。

___
メッセージの投稿機能があるWEBアプリケーションでそのメッセージを一覧でメッセージテキストと投稿者を表示したい時などを想定してビューファイルを下記のように作成した場合

:::note warn
ヘルパーメソッド使用前
:::
“`app/views/messages/index.html.erb

<%= @messages.each do |message| %>
<%= message.text %>
<% end %>

“`

:::note i

元記事を表示

【Rails】初学者向け_基礎のみを活用しチャット機能を作る方法

## 1.バージョンを確認しましょう!

Rails 5.1.6
ruby 2.7.2p112

## 2.完成イメージ

ログイン済みのユーザーで一つのチャットルームを共有し、交流できる機能です。
同じ名前のグループは作成できないようにしてあります。
ぜひclosedな環境でグループを作成し、お話してみてください(^_^)v

## 3.実装の大きな流れ

>1.グループチャット機能に必要なModel、Controller、Viewの実装
>2.グループ系モデルとUserモデルの紐付け
>3.ちょっとしたフロントエンドデザイン

ちなみにUserモデルは既に作られている前提で記事を書いています。
筆者はdeviseというgemを使ってUser周りを整えております。

ちなみに本記事はこのような目次で進んで行きます!
一緒に楽しんでいきましょう ᕙ( ˙꒳​˙ )ᕗ

## 4. 必要ファイルを作成しましょう

“`ターミナル
$ rails g controller groups #groups_controller.rbを作成
$ rails g controller cha

元記事を表示

【Rails】お問合せフォームの実装

こんにちは!
この記事では、railsで **「お問い合せフォーム」** を実装していきます!
これは、お問い合せフォームを送信すると、設定したメールアドレス宛にお問い合せ内容が送信される機能です。

# ゴール
railsで「お問い合せフォーム」を実装し、gmailにお問合せ内容が届くようにすること。

### 完成イメージ1 (お問合せフォーム)
![スクリーンショット 2022-07-17 1.13.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/820462/7f56cc29-f213-c206-476d-8734af657f77.png)

### 完成イメージ2 (設定したGmailにお問合せが届く)
![スクリーンショット 2022-07-17 1.19.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/820462/189dc51a-1d31-8753-52f8-8de308853cfc.png)

元記事を表示

初めてのRailsチュートリアルに挑戦!第4・5章

# 第4章の学習内容
1. 組み込みヘルパー
1. カスタムヘルパー
1. 文字列
1. オブジェクトとメッセージ受け渡し
1. メソッドの定義
1. titleヘルパー、再び
1. 配列と範囲演算子
1. ブロック
1. ハッシュとシンボル
1. CSS、再び
1. コンストラクタ
1. クラス継承
1. 組み込みクラスの変更
1. コントローラクラス
1. ユーザークラス

# 第5章の学習内容
1. ナビゲーション
1. BootstrapとカスタムCSS
1. パーシャル(partial)
1. アセットパイプライン
1. 素晴らしい構文を備えたスタイルシート
1. Contactページ
1. RailsのルートURL
1. 名前付きルート
1. リンクのテスト
1. Usersコントローラ
1. ユーザー登録用URL

# 学習を終えて
第4章ではRailsでありながら、以前学習したRubyの基礎を学ぶような内容であった。テキストや動画の通りに進めることで、解決できないエラーも発生しなかったので、学習しやすかった。
第5章ではwebページのレイアウトの学習であったため、HTM

元記事を表示

options_from_collection_for_selectですでに選択されている値を呼び出す

`form_for`ヘルパーで`select`を利用する際に、`options_from_collection_for_select`を利用した。その際、すでに保存されている値を呼び出す方法につまづいたので、メモを残しておく。

NG例。`selected`で指定しようとしても取れない。

“`ruby
= f.select :id, options_from_collection_for_select(Users.all, :id, :username), {include_blank: true}, class: “form-control”, selected: user.id
“`

OK例。`options_from_collection_for_select`の第三引数に指定してあげればOK

“`ruby
= f.select :user_id, options_from_collection_for_select(Users.all, :id, :username, user.id), {include_blank: true}, class: “form

元記事を表示

就活生のAtcoder奮闘記〜学習編〜

初めまして見習い駆け出しエンジニアです。

現在大学三年生です。データエンジニアとして長期インターンをさせていただきながら日々技術を磨いている次第です。これからとにかくアルゴリズムを勉強してatcoderの赤色を!と言いたいところですが、現在灰色の私には遠い未来ですので、まずは緑色を目標に(緑も難易度高い)アルゴリズムを勉強していきたいと思います。普段はc言語とrubyを主に使っているのですが、競プロではc++を使うと勉強がしやすいためまずはc++を軸に勉強していこうと思います。

まずこれから使っていく教材

・問題解決のための「アルゴリズム*数学」が基礎からしっかり身に付く本
・atcoderのc++の基礎文法

この二つを一周するだけでまずどれほど太刀打ちできるのかを試してみようと思います。

8/20までに教材を終わらせてからその次のatcoderの大会に挑戦してみようと思います。

よろしくお願い致す。

元記事を表示

RailsをCentOS7に構築

はじめに

将来的にwebアプリケーションを作ることを考え、Centos7上にruby on railsの環境構築をしようと思います。実際の現場はLinux環境が圧倒的に多いとのことなので、早いうちから慣れるという意味でもLinuxの中でRuby on Railsを使えるようにした備忘録です。

ホストPCのスペックは以下の通りです。
・CPU Intel Corei3-7100U
・メモリ16GB
・HHD 1TB(空きは815GB)

CentOSの情報
・CentOSバージョン 7.9.2009
・メインメモリ 2048MB
・ストレージ 64GB

LAMP環境を構築したときよりもメモリ・ストレージ共に大きくしましたが、ホストOSは特に問題なく操作できました。

rbenvのインストール

今回はrbenvというRubyのインストールとバージョン管理が簡単に出来るツールを利用してRubyをインストールしました。

① gitのイ

元記事を表示

【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

元記事を表示

OTHERカテゴリの最新記事