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

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

【Ruby On Rails】radio_button:数値として扱いparamsを使って合計点数など計算する

#実現したい内容
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/747746/e578b5ca-28c4-3194-3c10-810d75bd1631.png)

上記の質問内容に対してラジオボタンを押したときに

* はい=>2点
* いいえ=>0点
* どちらでもない=>1点

と、それぞれのラジオボタンを点数として取り扱う

更に、それらの点数を合計し、結果をDBに保存する

#使用するメソッド
・ [form_with]
・ [radio_button]
・ [label]
・ [submit]
・ [params]

#viewには何を書く?
viewではform_withを使用し、フォームを作成する

form_withのネスト(入れ子)に「radio_button」、「label」を使用
⇨「はい」、「いいえ」、「どちらでもないの」フォームの内容とそれらにあてはめたい点数(数値など)を入力

「submit」を使用し、DBに保存

#controllerには何を書く?

元記事を表示

form_forにおけるsubmitの役割について

<%= form_for @post do |f| %>

<%= f.label :body %>
<%= f.text_field :body, :size => 140 %>

<%= f.submit "投稿する" %>
<% end %>

におけるf.submitの役割は
@postの中身がPost.new(空の箱)の場合はcreateアクションに遷移する。
投稿内容を書き換えたい場合、
@postの中身を書き換えることになり、中身はPost.newではないので、その場合はupdateアクションに遷移する仕組みとなっている。

元記事を表示

「Herokuの起動が重すぎる」を解決する方法

#はじめに
 現在オリジナルアプリで朝散歩習慣化アプリを作っています。
Herokuにデプロイしているのですが、立ち上がりがとにかく遅くて使い勝手が悪い。
今回はHerokuの立ち上がりを早くする方法について学んだのでまとめます。

#なぜ起動が遅くなるのか
 Herokuの立ち上がりが遅い原因は、「30分アクセスがないとスリープモードになる」という仕様があるためらしいです。
そのため、スリープにしないために設定を変える必要があります。

#Herokuにスケジューラを追加

まずはターミナルで下記のコマンドを打ちます。

“`
% heroku addons:create scheduler:standard
“`
すると以下のような表示が出ます。

“`
Creating scheduler:standard on ⬢ morning-walk… free
To manage scheduled jobs run:
heroku addons:open scheduler

Created scheduler-flexible-28737
Use heroku a

元記事を表示

【Rails】macのrailsサーバーに他の端末からアクセスする方法

## はじめに
 本記事は、プログラミング初学者が、学習を進めていて疑問に思った点について調べた結果を備忘録も兼ねてまとめたものです。
 そのため、記事の内容に誤りが含まれている可能性があります。ご容赦ください。
 間違いを見つけた方は、お手数ですが、ご指摘いただけますと幸いです。

## macのrailsサーバーにiPad等でアクセスする方法

macローカルでrailsウェブサービスを作ってて、スマホ実機でテストしたいとき。
エミュレータでもいいけど、実機じゃないとテスト出来ないときってありますよね…

### macと他の端末を同じWi-Fiに繋げる
macと他の端末を同じWi-Fiに繋げます。

### macのローカルIPアドレスを確認する
#### GUIで確認する方法
アップルメニューから「システム環境設定」を選択。
![スクリーンショット 2022-02-24 2.11.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342443/b53c4860-d0a6-b64b-d51

元記事を表示

【rails】機能削除等で不要なテーブルが出てきた時の対応

はじめに

不要な機能削除が発生した際に、その機能でしか使ってなかったようなテーブルがあった場合は原則削除したほうがよいと思う。不要なソースコードやテーブルが残っていると混乱を招くだけなので。(ただし、なにかしらの理由で残しておいたほうがいい場合を除く)

ただし、いきなり削除すると問題があった時に面倒なので、いったんrenameしてアクセスできなくして、しばらく運用して問題なければdumpをとって削除する。万が一問題があったら元のテーブル名に戻す。

注意

プロジェクトごとにやり方があると思うので、あくまで参考程度にしてください。

手順

### 不要な機能の削除方法

– 不要な機能のソースコードを削除する
– 別の場所で共通で使っている部分がある場合があるので注意する
– 不要な機能の削除に関わるspecを削除する

### テーブルのrename

– codeを全検索して model が使われていないことを確認する
– テーブルをrenameするmigrationファイルを作成する
– no_more_use_<元のテーブル名>のような名前にすると

元記事を表示

bundle exec rspec実行時にSelenium::WebDriver::Chrome#driver_path= is deprecated.〜 エラーが発生した

# bundle exec rspec実行時のエラー解決備忘録

## エラー内容

– RSpecでテストを実行使用とした際に、下記エラーが発生した。

“`
$ bundle exec rspec2022-02-23 18:27:19 WARN Selenium [DEPRECATION] Selenium::WebDriver::Chrome#driver_path= is deprecated. Use Selenium::WebDriver::Chrome::Service#driver_path= instead.
“`

## 解決方法
– Gemfileの記載内容を修正
– gem ‘chromedriver-helper’ を削除
– gem ‘webdrivers’ を追加し、bundle installを実行
– 再度bundle rspec test を実行し、無事テストが走った

“`
group :test do
# Adds support for Capybara system testing and selenium driver

元記事を表示

unknown attributeのエラー

簡易的なフリマアプリを作成中。

一通りコードも書き終えて、いざHerokuへデプロイ!!

デプロイ後、挙動確認のため、ユーザー登録→商品登録→別ユーザーの登録→商品購入を試みるも、

`We’re sorry, but something went wrong.`のエラー文が表示。

## 原因探究
何が悪いのかを調べるため、エラーログを確認。

“`:ターミナル
> heroku logs –tail
“`
すると下記のエラーログを発見。

“`:ターミナル
ActiveModel::UnknownAttributeError (unknown attribute ‘item_id’ for Order.):
“`

意味を調べてみると、`Oderモデルにitem_idがありません` といった内容。

Heroku上でカラムの確認を行うため、下記を入力。

“`:ターミナル
> heroku run rails console
  > Order.new
“`

結果、

“`:ターミナル
=> #

元記事を表示

Railsでjsonデータを返す

## モデルを作成

まずは返却したいデータを作成したいのでモデルを作成する。

“`ruby
rails g model Task title:string body:string
“`

## Rails consoleでデータを作成

モデルができたら実際のデータをRails consoleで作成する。

“`ruby
rails c

Task.create(titile: “jsonデータを返す”, body: “railsをapiとして使いたいのでデータをjson形式で返したい”)
“`

## controllerを作成する

jsonデータを返すためのアクションを作成する準備としてコントローラを作成する。

“`ruby
rails g controller api/v1/tasks
“`

## routes.rbの編集

リクエストが通るようにroutes.rbを編集する。

“`ruby
namespace ‘api’ do
namespace ‘v1’ do
resources :tasks
end
end
“`

## cont

元記事を表示

Ruby returnで複数の値を返す

# はじめに
学習記録アプリの開発中、グラフの作成のために1週間分の日付の取得する処理を、「今週」「最後に学習した日の週」「最後に学習した日の前週」の3つそれぞれ記載していました。Rubyでは、メソッドの戻り値を複数返すことができるということなので、3つの処理を1つにまとめていきたいと思います。

# 環境
– rails 6.0.4.4
– ruby 2.6.5
– chart.js 2.8.0

# 複数の戻り値を返し方
returnの後にカンマで区切って返す値を記述します。

“`
def calc(a, b)
x = a + b
y = a – b
return x, y
end

a = 20
b = 15
x_1, y_1 = calc(a, b)
puts x_1, y_1
“`
このように、x_1とy_1の変数にそれぞれ値が入っています。

“`ターミナル.
35
5
“`
ちなみに1つの変数に対して、複数の戻り値を代入すると、自動的に配列に変換されます。
正確には、データそのものが配列形式で入るのではなく、データの場所の情報が入り、配列と同じ記述

元記事を表示

【解決方法1】We’re sorry, but something went wrong. If you are the application owner check the logs for more information.

【事象】
RailsTutorial第6版の7章。
herokuへのデプロイ後に本番環境を確認したところ、なぜか/signupへのリンクで下記エラーが発生。
**「We’re sorry, but something went wrong. If you are the application owner check the logs for more information. 」**

開発環境では問題なく作動しているが本番環境の/signupへのリンクで何か問題が起きていることが発覚。

【やったこと】
下記コマンドでログを確認したところ、status=500の赤いテキストを発見。
“`heroku logs –tail“`

500エラーとはサーバーのエラーとなり、heroku側のエラー。
本番環境でマイグレーションしていないことに気づき、下記コマンドを実行。解決。
“`heroku run rails db:migrate“`

元記事を表示

ActiveRecord::Enum

## ActiveRecord::Enumとは?

ActiveRecord::Enumとは列挙型、あるいはenum型と呼ばれるものでActiveRecordが提供するenum型は数字のカラムに対してプログラム上で扱える別名を与えるもの。

## ActiveRecord::Enumを使う

例えば、あるモデルにそのモデルの状態(ステータス)を扱うカラムがあるとする。そのようなカラムがあった時にenumを利用するとカラムの値を数字として管理することができる。

“`ruby
class Task < ApplicationRecord enum status: { # statusと言うカラムの値をenumを使って表現する private: 0, draft: 1, published: 2, } end ``` このようにすると、statusカラムの値を数字として扱うことができるようになる。 (文字列としても、シンボルとしても指定することができるようになる) ## enumで定義されたカラムの値を確認する enumを利用すると、データを

元記事を表示

herokuでPostgreSQLの本番データベースをリセット

#railsチュートリアル10章で気になったのでメモ

##手順

“`
$ heroku pg:reset DATABASE
▸ WARNING: Destructive action
▸ postgresql-○×△-○×△ will lose all of its data

▸ To proceed, type データベースの名? or re-run this
▸ command with –confirm データベースの名?

>ここにデータベースの名?を入力する

# データベース再構成
$ heroku run rails db:migrate
“`

元記事を表示

外部キーのテストコードが上手くいかない

簡易的なフリマアプリを作成中。

単体テストコードにて、エラーが発生。
下記ターミナル内のエラー内容。

“`:ターミナル

Failures:

1) OrderDelivery 購入者情報の保存 内容に問題がある場合 userが紐ついていなければ購入できない
Failure/Error: expect(@order_delivery.errors.full_messages).to include( “” )
expected [] to include “”
# ./spec/models/order_delivery_spec.rb:81:in `block (4 levels) in

2) OrderDelivery 購入者情報の保存 内容に問題がある場合 itemが紐ついていなければ購入できない
Failure/Error: expect(@order_delivery.errors.full_messages).to include( “Item must exist” )

元記事を表示

Railsで使用しているDBの情報を取得する

# はじめに
`rails console` とかで今使っているDBの情報をパパッと表示したいと思って調べたら出てきたのでメモ代わりに書き出します。

# 結論
`connection_db_config` メソッドを使う(`connection_config` メソッドもあるが、こちらはRails 6.2で Deprecated となっている)

# 確認方法
ここではirbで確認してみる。

このようにDBの接続状況が `DatabaseConfigurations::HashConfig` オブジェクトで返ってくる。ちなみに `connection_config` メソッドでは `Hash` オブジェクトで返ってきていた。

“`ruby
irb(main):001:0> ActiveRecord::Base.connection_db_config
=>
#“sqlite3”

元記事を表示

【2022年2月】未経験から自社開発企業内定までの記録・感想

# はじめに

2021年6月より学習を開始・2022年2月頭から転職活動を開始し、三週間ほどで都内の自社開発企業様2社から内定を頂きました。
内定企業の技術スタックはRuby,Rails,Vue.js,Docker,CircleCiといったところです。

今後の未経験転職希望者の方々の参考になればと思い記録や感じたことを記事にします。

|見出し |概略|
|:|:|
|[自己紹介](#自己紹介)|学歴・職歴・資格
|[転職活動結果](#転職活動結果)|応募社数・使用媒体等
|[ポートフォリオ](#ポートフォリオ)|PFの内容・技術スタック等
|[学習記録](#学習記録)|総学習時間・PF作成の過程等
|[転職活動過程](#転職活動過程)|PF完成後に取り組んだ事等
|[面接内容](#面接内容)|面接で聞かれたこと・評価された事等
|[総評](#総評)|現在の未経験転職市場に対する個人的見解

# 自己紹介

年齢:25歳(社会人3年目)
出身大学: 慶應義塾大学法学部
現職:一部上場メーカーの営業
資格:TOEIC905点

プログラミング言語は昨年6月に初めて触りました。

#

元記事を表示

【Rails】ローカルサーバーを起動したときに、”A server is already running.”とエラーが出た時の解決方法

# 環境
– Ruby 2.6.6
– Rails 6.0.3

# エラー内容
Railsアプリのディレクトリ上でローカルサーバーを起動したところ、以下のようなエラーが発生し、アプリにアクセスできない状況になってしまった。
このエラーの内容は、サーバーはすでに実行されているというもの。

“`:ターミナル
$ rails s
=> Booting Puma
=> Rails 6.0.3 application starting in development
=> Run `rails server –help` for more startup options
A server is already running. Check /your_project_path/tmp/pids/server.pid.
Exiting
“`

# 原因、仮説
エラーが発生した原因は、ローカルサーバーを停止する前に誤ってターミナルを閉じてしまったことにありそう。
ターミナルを閉じた後もローカルサーバーが動いている状態になっているため、ローカルサーバーが動いているプロセスを終了させれば解決し

元記事を表示

【devise-token-auth x OmniAuth2.0 x SPA】でログイン機能を実装

ドキュメントがまとまっておらず非常に苦労したので、同じ実装をすぐできるようにまとめておく。今回は

1. ログイン用ボタンを押下
1. 新規タブでプロバイダーの認証画面に遷移
1. 認証が完了した後、コールバックにてユーザー登録
1. コールバックのウィンドウを閉じて、フロント側に認証情報を渡す

という流れの処理を実装する。

## gem
– [devise](https://github.com/heartcombo/devise):
Railsで認証を実装するためのgem
– [omniauth](https://github.com/omniauth/omniauth): マルチプロバイダー認証を行うためのgem
– [omniauth-rails-csrf-protection](https://github.com/cookpad/omniauth-rails_csrf_protection): [CVE-2015-9284](https://nvd.nist.gov/vuln/detail/CVE-2015-9284)の脆弱性に対処するためのgem。OmniAuth2.

元記事を表示

Rails migrationで使うデータ型の備忘録

#はじめに
ここ最近AWS(ECS)ばかり勉強していたため、久しぶりにRailsの勉強したのですが、マイグレーションの際のデータ型をすっかり忘れてしまったため、備忘録として残そうと思います。

#データ型の種類
データベースにデータを保存する場合、データの形式を理解しておく必要があります。
このようなデータ形式のことを、「データ型」といいます。
代表的なデータ型には、以下のようなものがあります。

型      内容
string     文字列(255文字まで)
text      長い文字列
integer    整数
bigint      整数
float      浮動小数
decimal     精度の高い小数
datetime    日時
timestamp   日時(Unixtime)
time      時間
date      日付
binary     バイナリデータ
boolean    真偽値(true or falseのように二択の際使われる)

#文字列の扱い
文字列を扱う際は選択肢として、「string」 と「text」があります。

string は

元記事を表示

Rails Fakerで意味不明な文章をつくる(日本語)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1111652/15bf42b3-c99a-993b-4827-f2089392cf7e.png)

# Fakerで意味不明な文章をつくる
ダミーデータをつくるときの定番Gem、`Faker`
ポケモンだったり、スターウォーズだったりとユニークなダミーデータがつくれることで人気があります。

https://github.com/faker-ruby/faker

インストールはGemfileに書いて`bundle install`すればOKです。
日本語化すればfakerでも日本語の名前をつくることもできますが`Gimei`という日本語の名前や住所のダミーをつくるときに便利なGemもあります。

https://github.com/willnet/gimei

“`ruby:Gemfile
gem ‘faker’
gem ‘gimei’
gem ‘rails-i18n’
“`

![imag

元記事を表示

‘UNIQUE constraint failed’について

#内容
DeviseのRegistrationsControllerのcreateアクションで

“`
ActiveRecord::RecordNotUnique in Devise::RegistrationsController#create
SQLite3::ConstraintException: UNIQUE constraint failed: users.name

“`
とでてしまう。

#解決
UNIQUE制約を受けているため、nameにあったunique: trueを消す。

“`
add_index :users, :name, unique:true #←こいつを消す
“`

今回はこれで解決できたが、どうしてもunique:trueを消したくない場合はどうするのだろう。
また調べていきたい。

以上

元記事を表示

OTHERカテゴリの最新記事