Rails関連のことを調べてみた2021年11月25日

Rails関連のことを調べてみた2021年11月25日
目次

Rails scaffoldを使ってRailsに入門する

## はじめに
Railsのscaffoldを使用してCRUDのアプリケーションを生成してみます。
また、生成されたコードを読み解いて処理の流れをざっくりと読み解いてみます。

なお、本編の内容はRailsチュートリアルの2章を参考にしています。随時、参考になった文献を記載しています。

[第2章 Toyアプリケーション – Railsチュートリアル](https://railstutorial.jp/chapters/toy_app?version=5.1#sec-demo_users_resource)

## Rails scaffoldとは

– Railsの機能の一つで、コマンド1つでCRUDの雛形を作成することが出来る
– scaffoldとは「足場」という意味を持ち、Railsアプリケーションの足場を作る機能と言える

[What is Scaffolding in Ruby on Rails? – RubyGuides](https://www.rubyguides.com/2020/03/rails-scaffolding/)

## 使ってみる
### scaffo

元記事を表示

マイグレーションエラーについて

railsでデータベースを用意する際に、

“`
$ rails generate scaffold ・・・
“`

コマンドなどでマイグレーションファイルを作成した後、

“`
$ rails db:migrate
“`

でデータベースの変更を反映しないと、
ActiveRecord::PendingMigrationError
マイグレーションエラーとなってしまいます。

忘れないようにしましょう。
(偉そうにすみません。自分が忘れていたので。)

以上

元記事を表示

【Rails】ルーティングのまとめ

##概要
railsのroutes.rbに記述するルーティングについてのまとめ。

##内容

####ルーティングとは
受け取ったurlを認識し、適切なコントローラ内アクションやアプリケーションに割り当てる機能。

####構文
“`
httpメソッド ‘urlパターン’, to: ‘コントローラ#アクション’
“`

#####ex) 以下のhttpリクエストを受け取った場合、以下のようになる。
“`
GET /patients/17
“`

routes.rb

“`
get ‘/patients/:id’, to: ‘patients#show’
“`

### HTTPメソッド

クライアントから送られたリクエストの種別を表すもの。

####get 
ページを表示する操作。

####post 
データを登録する操作。

####put 
データを変更する操作。

####delete 
データを削除する操作。

###rootの設定 
[http://localhost:3000 /](http://localhost:3000/%E3%80%8D) にアクセ

元記事を表示

改【Railsチュートリアル】プロフィール画像をアプリ内で設定できるように変更

#はじめに
前回の記事[【Railsチュートリアル】プロフィール画像をアプリ内で設定できるように変更](https://qiita.com/supyolo888/items/def08450cc4190977324)で、sample_appにおいて、プロフィール画像をアプリ内で設定できるようにしたが、本番環境でアセットパイプラインに関してのエラーが発生したため、carrierwaveを用いた方法に変更する。
また、[Rialsチュートリアル第6版13章](https://railstutorial.jp/chapters/user_microposts?version=6.0#sec-image_upload_in_production)においてAWSのS3を作成済みなので、今回は本番環境のみそちらにアップロードするよう設定していく。

**前提**
第6版sample_appが完成している

#carrierwaveの設定

Gemfileにcarrierwaveを追加

“`rb:Gemfile
gem ‘carrierwave’
“`

“`
$ bundle insta

元記事を表示

【Ruby】早期リターンと倒置if

##早期リターン
式の値を戻り値としてメソッドの実行を終了します。式が省略された場合には nil を戻り値とします。

引用:https://docs.ruby-lang.org/ja/latest/doc/spec=2fcontrol.html#return

“`ruby
def greeting(flag)
‘good evening’
return ‘good night’ if flag
false
end

greeting(true)
# => “good evening”
greeting(false)
# => false
“`

##倒置if
条件文がfalseのときnilを返す

“`ruby
def greeting(flag)
‘good evening’
‘good night’ if flag
end

greeting(true)
# => “good evening”
greeting(false)
# => nil
“`

元記事を表示

【Rails】Ajaxでデータを渡す際のCSRFエラー【jQuery】

# やりたいこと

`$.ajax`でデータをRails側に渡して保存したい。

“`jsx
function hoge(){
$.ajax({
type: ‘POST’, // リクエストのタイプ
url: ‘/hoge’, // リクエストを送信するURL
data: {
hoge: { hoge: hogehoge }
}, // サーバーに送信するデータ
dataType: ‘json’ // サーバーから返却される型
})
}
“`

# エラー内容

“`
422 (Unprocessable Entity)
Can’t verify CSRF token authenticity.
“`

# 原因

RailsにはCSRFという脆弱性の対策が備わっている。
Railsが提供するformなどのヘルパーを使うと自動でセキュリティトークンが設定されるが`$.ajax`では自分で設定しなければならない。

# 解決策
CSRF対策を無効にするという方法もあるが、通信の際にセキュリティトークンを設定すればよい。

元記事を表示

Rails ロールバックの手順

#はじめに
自分の学びのアウトプットのため、こちらの記事を参考にさせていただきながら書きました。
[【Rails】$rails db:rollbackしたい時の間違えない手順](https://qiita.com/s_tatsuki/items/3e1f119c91e21b8f0c33)

#手順
###1.マイグレートのバージョンを確認
“`shell:コンソール
$ rails db:version
Current version: 20211119053634
“`

###2.ロールバックを実行
“`shell:コンソール
#一つ前のバージョンに戻す
$ rails db:rollback
“`

“`shell:コンソール
#指定したバージョンまでなかったことにする
$ rails db:rollback STEP=◯◯○◯◯○◯◯○
“`

###3.migrateされる前の状態に戻っているか確認
“`shell:コンソール
$ rails db:abort_if_pending_migrations
You have 1 pending migrations

元記事を表示

投稿モデル単体テストコードの記述

前回に続いて、サンプルアプリの投稿機能、Eatモデルの単体テストコードを実装します!

#①.テストコードを記述するファイルを作成

まず、Eatモデル単体テストコードを記述するための、ファイルを生成します!

以下のコマンドを実行します!

“`php:ターミナル
% rails g rspec:model eat
“`

以下のように、テストコードを記述するためのファイルeat_spec.rbと、FactoryBotを記述するためのファイルeats.rbが生成されます!

“`php
spec
L factories
L eats.rb
L users.rb

models
L eat_spec.rb
L user_spec.rb
“`

#②.FactoryBotを準備

続いて、Eatモデルのインスタンスを生成するFactoryBotを設定します!

eats.rbに、以下のように記述します!

“`php:spec/factories/eats.rb
FactoryBot.define do
fac

元記事を表示

【Railsチュートリアル】プロフィール画像をアプリ内で設定できるように変更

#はじめに

Railsチュートリアル第6版sample_appにおいて、プロフィール画像にはgravatarが使用されているが、プロフィール画像をアプリ内で設定できるようにしていく。

**前提**
第6版sample_appが完成している

#初期画像を設定#

usersテーブルにimage_nameカラムを追加する。

“`
$ rails g migration add_image_name_to_users
“`

“`rb:db/migrate/[timestamp]_add_image_name_to_users.rb
class AddImageNameToUsers < ActiveRecord::Migration[6.1] def change add_column :users, :image_name, :string end end ``` ``` $ rails db:migrate ``` 初期画像default_user.jpgをapp/assets/imagesディレクトリ下に用意しておく。 ``` ├ app/

元記事を表示

ActiveRecordクエリメソッドまとめ

#はじめに
ご覧頂きありがとうございます。
初学者がActiveRecordのクエリメソッドと生成されるSQLと比較しながら、まとめました。
また個々のメソッドの詳しい使い方に関してはRailsドキュメントを参照ください。

#find
idを指定してレコードを取得
見つからなかった場合は例外(ActiveRecord::RecordNotFound)が発生

“`
User.find(1)
# SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1
“`

#find_by
条件を指定して、レコード1件取得する
見つからなかった場合はnilを返却

“`
User.find_by(id: 1)
# SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1
“`

#first
idで昇順に並び替えて、最初の1件を取得

“`
User.first
# SELECT `users`.* FROM `users` ORDER BY `users`.`

元記事を表示

Could not reach host index.rubygems.org. Check your network connection and try again. と言うエラーについて。

### Cloud9を使ってrailsチュートリアルを進めているのですが、`Could not reach host index.rubygems.org. Check your network connection and try again. `と言うエラーについて教えていただきたいです。

### 発生している問題・エラー

“`
$ bundle install
$ bundle update
“`
などを叩くと

“`
Could not reach host index.rubygems.org.
Check your network connection and try again.
“`

と表示されます。

自分で試したことといえば数分時間をおいてから新しくディレクトリを作り直すことしかできず、(お手上げ)しかし、それでなぜかエラーが表示されなくなり、問題なく先ほどのコードを叩くとinstall されてupdate出来てしまいました。

そこで、なぜ解決できたのか質問させてください。

hostに行けないとエラーが出た場合(Could not reac

元記事を表示

ruby on rails tutorial3章を始めたら出てきたThere was insufficient space〜 というエラーの解決方法

やっと3章に突入して意気揚々と進めていくと、

“`ruby:qiita.rb

There was an error while trying to write to
`/tmp/xxxxxxxxxxxxxxxxxxxx/versions`. There was
insufficient space remaining on the device.

“`

がこんにちは。

どうやら何かの容量がないということらしい。

そうこうしているうちに、awsのターミナルにコードを入力できなくなる。
![スクリーンショット 2021-11-23 10.30.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2144713/a365d842-4b6f-973f-26eb-5265ba55315b.png)
![スクリーンショット 2021-11-23 10.30.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214

元記事を表示

【オリジナルアプリ】公務員からの転職を考える人のための交流サイト【公務員NEXT】

はじめに

自己紹介

– 未経験からのエンジニア転職を目指す30代前半の地方公務員です。
– 3児のパパであり、家事・育児・仕事の合間を縫って、何とか20時間/週の学習時間を確保できているという状況です。(記事執筆時点で学習開始から40週を過ぎたので、総学習時間は約800時間です。)
– ポートフォリとして、オリジナルアプリが完成したので、これから転職活動を開始します。

この記事の目的

– 転職活動を開始するにあたって、オリジナルアプリの内容を人の目を意識した形で整理しておきたかったからです。
– オリジナルアプリの案に悩んでいる人に向けて、一つの事例として参考になってくれればと思っています。
– 似た境遇の人の励みになれば、幸いです。(私自身、似た境遇の人が頑張っているところを見るとすごく励みになりました。)

オリジナルアプリ「公務員NEXT」について

目次

[1.サービスの概要](#1サービスの概要)
[2.開発経緯](#2開発経緯)
[3.使用技術](#3使用技術)
[4.インフラ構成

元記事を表示

Rails×RSpec×Docker×CircleCI

#はじめに
RailsアプリをDocker上で構築し、CircleCIを用いて、RSpecによる自動テスト、またHerokuへの自動デプロイの仕組みを実現していく。

**環境**

– フレームワーク : Rails
– テストフレームワーク : RSpec
– データベース : MySQL
– コンテナ : Docker(Docker Compose)
– CI/CDツール : CircleCI
– サーバー : Heroku

**前提**
GitHub、Herokuに登録済み
Docker、Docker Composeをインストール済み

**参考**
山浦清透さんの[Docker超入門講座 合併版 | ゼロから実践する4時間のフルコース](https://youtu.be/lZD1MIHwMBY)という動画を参考にさせていただく。

#Docker環境でRailsアプリを作成

作業用ディレクトリを用意し、必要なファイルを作成する。
今回はqiita-railsというディレクトリ内で作業していく。

“`
qiita-rails/
├ src/

元記事を表示

Ruby on RailsでAPI認証(devise_token_auth)

## コマンドメモ
“`
$ rails new project1 –api
$ cd project1
$ rake db:create
$ (Gemfileを更新する)
$ bundle install
$ spring stop ←止めないと次のコマンドが止まる場合があった
$ rails g devise:install ←ごちゃごちゃ言われるけど気にせず次に行く
$ rails g devise_token_auth:install User auth
$ (migrationファイルを更新する。confirmナントカはコメントアウト、indexのところも含めて)
$ rake db:migrate
“`

元記事を表示

Rails x jQueryで投稿にコメントをAjaxで追加・削除可能にした

#環境
>ruby 3.0.2
>Rails 6.1.4.1
>jQuery

#目標
![画面収録-2021-11-22-19.05.18-1-1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621282/83fcef18-fbf4-6e90-1352-6b1bd085b189.gif)

※コメントは投稿詳細ページで表示・追加・削除可能な状態
コメントを投稿 → コメントが保存されフラッシュメッセージが表示
コメントを削除 → コメントが削除されフラッシュメッセージが表示
コメント送信時バリデーションに引っかかる → エラ〜メッセージが表示

#モデル
~~~user.rb
has_many :posts, dependent: :destroy
has_many :comments
~~~

~~~post.rb
belongs_to :user
has_many :comments, dependent: :destroy
~~~

~~~comment.rb
belongs_to :user

元記事を表示

Rails 投稿したTaskが削除できない

・起きている問題
GithubにPushしたもので、投稿したTaskの削除が出来ない。

下記のように、コード部分には特に欠陥はないように見える。

config.routes.rb

resources :tasks

app/tasks_Controller.rb

def destroy
@task.destroy

flash[:success] = ‘Task は正常に削除されました’
redirect_to tasks_url
end

app/views/tasks/show.html.erb

“`
<%= link_to 'このタスクを編集する', edit_task_path(@task), class: 'btn btn-light' %>
<%= link_to 'このタスクを削除する', @task, method: :delete, data: { confirm: '本当に削除してよろしいですか?' }, class: 'btn btn-danger' %>
“`

元記事を表示

【rails】AWS EC2ボリューム 増量による「No space left on device @ io_write」エラー解消

#1.状況

・AWS EC2
・Nginx
・rails 5.2.6

容量不足が原因で発生する「No space left on device @ io_write」エラーが発生
以下コマンドをターミナルに打ち込む。

“`
[ec2-user ~] $ df -h
“`

Use100%となっているファイルシステム「/dev/xvda1」の容量が不足してたためにエラーが発生したと思われる。

“`
Filesystem Size Used Avail Use% Mounted on
devtmpfs 475M 0 475M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 26M 467M 6% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/xvda1 10G 10G 0 100% /
tmpfs

元記事を表示

【初心者向け】翻訳ファイル(YML)編集後から「InvalidLocaleData」のエラーになる

###■環境
・Windows10(64bit)
・Ruby 2.7.4
・Rails 5.2.6
###■翻訳ファイル編集後から「InvalidLocaleData」のエラーになる
####状況
Railsアプリケーションを国際化対応(i18n)するために、翻訳ファイルである「ja.yml」と「en.yml」を編集した。
しかし、その後から全ビューが以下のエラーで表示不可になった。

 I18n::InvalidLocaleData in 【コントローラ名】#【アクション名】
 Showing 【ビュー名】 where line #【行番号】 raised:
 can not load translations from 【アプリケーションの絶対パス】/config/locales/en.yml:
 #): did not find expected key while parsing a block mapping at line 【行番号】 column 【列番号】>

####原因
ダブルクォーテーション(”)で囲

元記事を表示

Rails6をDocker+MySQLで環境構築(Windows11)

#はじめに
この記事では11/22現在、DockerでRuby on Railsの環境を構築する方向けの内容です。完成したものはGithubにて[ソースコード](https://github.com/hikobend/docker_rails)を公開しています。

またDockerをインストールする手順は、

[上の動画](https://www.youtube.com/watch?v=LSQKHW01ACo&t=0s&ab_channel=%E3%81%A0%E3%82%8C%E3%81%A7%E3%82%82%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%2F%E5%B1%B1%

元記事を表示

OTHERカテゴリの最新記事