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

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

superってなんだ?

superとは親クラスの同名のメソッドを使えるようになるということです。
以下のコードではHogeクラスを親クラスにしてみる
“`
class Hoge
def hogehoge
p ‘ほげ!’
end
end

class Huga < Hoge def hogehoge p 'ふがふがふが!' end end class Fuga < Hoge def hogehoge super end end ``` ## Hugaにhogehogeメソッドを呼び出してみる ``` huga = Huga.new huga.hogehoge => “ふがふがふが!”
“`
親クラスのhogehogeメソッドはオーバーライド(上書き)されます

## Fugaにhogehogeメソッドを呼び出してみる
“`
fuga = Fuga.new
fuga.hogehoge
=> “ほげ!”
“`
このように親クラスの同名のインスタンスメソッドを子クラスで使えるようになるもの。
それがsuperというものです。

短いですが以上です。何か間違い

元記事を表示

【React】スケルトンスクリーンの実装方法【Rails API】

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

## スケルトンスクリーンの実装方法

HTTPリクエストをするたにaxiosを使用します。

“`:ターミナル
$ npm i axios
“`

“`src/urls/index.js
// リクエストに使用するURIを定義
const DEFAULT_API_LOCALHOST = ‘http://localhost:3001/api/v1’

export const usersIndex = `${DEFAULT_API_LOCALHOST}/users`
“`

“`src/apis/users.js
import axios from ‘axios’;
import { usersIndex } from ‘../urls/index’

export const fetchUse

元記事を表示

コントローラの生成と削除 【Ruby on Rails】

## コントローラの生成
コントローラ名「Static Pages」を作る際に、表記をキャメルケースの`StaticPages`とした場合、以下のコマンドによりコントローラが生成できる。このタイミングでアクションを作成したい場合は、続けて半角スペースを空けて記載する。(今回は、homeとhelpアクションを作る)
“`
$ rails g controller StaticPages home help
“`
## コントローラの削除
このとき、「static_pages_controller.rb」というコントローラファイルが作成されるだけではなく、これに関連するファイルが大量に生成される。また、既存のファイルに対してもコードが変更される。
例えば、`rails generate`を実行するとルーティングの`routes.rb`ファイルも自動的に変更される。

このようなときは、`rails destroy`というコマンドを実行することで、元に戻すことができる。
例えば、`rails g controller StaticPages home help`を実行したあとに、これを取

元記事を表示

【Rails】【メモ】simple_calendarを使って日付を押すと新規投稿であればnew,投稿済みであればeditに飛べるリンクを作成

# 環境
– Mac(12.2.1)
– MacBook Pro (13-inch, 2020)
– 2 GHz クアッドコアIntel Core i5
– 16 GB 3733 MHz LPDDR4X
– ruby (3.0.0p0)
– rails (7.0.1)
– mysql2 (0.5.3)
– 使用gem
– devise
– simple_crendar

# はじめに
考えたことを実装し動くことを優先に作成したので、読んでもよく分からないところもあるかもしれません

# 前提知識
– simple_clendar
– pluckメソッド
– strftimeメソッド

# 参考にした記事

## simple_calendar
https://yuma-studio.net/programming/calendar/#SimpleCalendargem

## strftimeについて

https://stackoverflow.com/questions/41894195/perform-strftime-on-created-at-i

元記事を表示

Userモデル作成

今週から人生初のオリジナルアプリの作成に取り掛かる。

作りたいアプリはグループ内で共有して使えるカレンダーアプリ。
コメント機能も実装して、グループ内でチャットもできるようにしたい。

昨日までの時点で一通りの企画と設計は完了。

![85678106-57E3-4FAE-85E9-4B6551CD7119.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533566/85cdd6e9-9734-eb44-8856-befad0d1be57.png)

usersテーブルの「所属名」と「部署名」は、同じ意味合いに気づき、所属名は削除することに。

早速“rails newコマンド“でアプリを新規作成。

ここからの手順としては以下の通り。
1: Userモデル作成
2: Groupモデル作成
3: Calendarモデル作成
4: Commentモデル作成

というわけで、本日はUserモデルに取り掛かる。

“rails g devise:install“と“rails g devise

元記事を表示

Rspec+FactoryBot導入メモ

## gemのインストール

“`rb:Gemfile
group :development, :test do
gem ‘rspec-rails’
gem ‘factory_bot_rails’
# 以下必要に応じて追加する
# 必要になったタイミングで追加で問題なし
# gem ‘faker’ 名前やリージョンなど様々なダミーデータが使用できる
# gem ‘rubocop-rspec’ rspecでrubocopを使用できる
# gem ‘rspec_junit_formatter’ circleCIなどのCIツールで並列テストを効率的に実行するためのタイミングデータを作成してくれる
end
“`
factory_bot_railsはdevelopmentのgroupにも含める必要がある
“`plaintext:shell
# factory_bot_railsをdevelopmentのgroupに含めないと、テスト実行時に下記エラーが発生する

An error occurred while loading ./spec/models/hog

元記事を表示

link_toのソースコード読解

ネットでオープンソースを読解することで良い勉強になるということを見かけたので、Railsでも代表的なメソッドであるlink_toのソースコードを読解してみようとおもいます。そして最後のほうに、具体例をあげてコードを追ってみようとおもいます。
事前に申し上げておきますが、今回の記事はかなり重厚になることが予想されます。また、privateメソッドが多いため読解するメソッドがコロコロ変わりますのであしからず。

それでは実際のソースコードを以下にペーストします。
“`
def link_to(name = nil, options = nil, html_options = nil, &block)
html_options, options, name = options, name, block if block_given?
options ||= {}

html_options = convert_options_to_data_attributes(options, html_options)

url = url_target(name, options)

元記事を表示

【個人開発】「真のナポリピッツァ協会」認定店をサクッと探せるWebサービスをリリースしました。

## はじめに
[おおの](https://twitter.com/ohno_hope3)と申します。
突然ですが、**真のナポリピッツァ**[^1]を食べたことはありますか?
これを使えば**真のナポリピッツァが食べられて感動すること間違い無し**というサービスを開発しました。
![ogp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/804334/fb766782-164b-270b-1fc7-8955e8622296.png)

**URL:** https://www.napolipizza-club.com/
**GitHub:** https://github.com/shota-hope/True_Neapolitan_Pizza_Club

– ナポリピッツァ好きが**真のナポリピッツァ協会認定店**[^2]をサクッと探したい。
– ナポリピッツァを意識して食べたことがなかった人に**真のナポリピッツァ**[^1]の感動を伝えたい。
– ナポリピッツァ界隈の発展を応援する想いを込めて *

元記事を表示

ルーティングの指定方法について

ルーティングにおいて

collectionとmenberの違い。
idを特定することができるのがmember
書き方としては下記のようになる。

collection do
post :confirm
end
member do
patch :confirm
end

もしくは
 
  post:confirm, on:collection
  patch :confirm, on:member

と書くこともできる。

元記事を表示

TDDで機能追加するとき

# overview
– Railsのアプリに機能を追加したり編集したり削除したりするときの自己流フロー
– 備忘録
– TDDでやりんす(Minitest)

# Get staretd
### Issue作成
1. githubでissueを作る
1. チェックボックスでテストメソッドのタイトルを書いておくと良いかも

> テストを作る際には以下のルールを設けています
> ・基本的にModelごとにcreate, read, update, deleteの4ファイルで構成される
> ・各テストファイルのテスト名はUnable to 〜, Able to 〜と2種類の文頭で始まる
> ・Unable to 〜でNGなリストを作ることでテストファイルを仕様書として機能させます

“`
# example

– [ ] Create
– Unable to create without Login
– Unable to create with blank
– Able to create
– [ ] Read
– [ ] Update
– [ ] Delet

元記事を表示

【Rails】any?メソッド

モデルにデータが存在するとtrue
モデルにデータが存在しないとfalse

ブロックで使用する場合はブロック内の条件が一つでもtrueであればtrueを返す。

元記事を表示

【Heroku】herokuでRailsアプリをデプロイする際の基本的な手順のまとめ

## 本記事の前提
**使用環境**
– Rails 5.2.6.2
– ruby 2.6.6
– git 2.18.5
– AWS Cloud9

**省略作業**
– Herokuアカウントの登録
– Gitのインストール
– デプロイするアプリの作成

## デプロイする手順
### 1.Heroku CLIのインストール
Herokuの操作をコマンドラインから行えるようにするために、Heroku CLIをインストールしていきます。
以下の公式サイトからご自身のOSに合ったものをインストールして下さい。

https://devcenter.heroku.com/articles/heroku-cli

**AWS Cloud9の場合**
以下のコマンドを全てコピーし、ターミナルに貼り付けて実行して下さい。
“`terminal:terminar
$ curl -OL https://cli-assets.heroku.com/heroku-linux-x64.tar.gz
tar zxf heroku-linux-x64.tar.gz && rm -f heroku-linu

元記事を表示

【Heroku】Rubyバージョンの差異によるエラーの解決

## 発生したエラー
![スクリーンショット 2022-03-03 10.40.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694767/3ce57220-2142-1b6f-ac9e-bbe3be567ed7.png)
git commitしたの後にgit push heroku masterを実行し、アプリをデプロイしようとしたところ、Rubyバージョンが2.6.3のためにheroku-20にデプロイできないという旨のエラー発生した。。

## 解決方法
解決策としてherokuのstackを20から18に下げる方法もあるが、今回はRubyのバージョンをheroku-20に対応している2.6.6に変更することで解決していく。Rubyのバージョンを2.6.6に変更する際の作業の流れは以下のようになる。

1.Rubyバージョンの確認し、Ruby2.6.6をインストール
“`terminal:terminal
$ rvm -v //rvmのバージョンとインストールされていることを確認
$ rv

元記事を表示

【Rails】ページネーション機能の導入

#gem kaminariによるページネーション機能の実装

## 実装の流れ
1. Gemfileにgem ‘kaminari’を追加する。
1. bundle installを実行してkaminariをインストールする。
1. rails g kaminari:configを実行してkaminariの設定ファイルを作成する。
1. rails g kaminari:views defaultを実行してページャで利用するテンプレートを作成する。
1. 該当するコントローラー,ビューにページャを実装していく。

## 1.Gemfileにgem ‘kaminari’を追加する。
“`rails:Gemfile
gem ‘kaminari’
“`

## 2.bundle installを実行してkaminariをインストールする。
“`rails:terminal
$ bundle install
“`

## 3.rails g kaminari:configを実行してkaminariの設定ファイルを作成する。
“`rails:terminal
$ rails g kami

元記事を表示

Rubyで特定の数字を検知するプログラムを実装する

# はじめに
プログラミングスクールでRubyについて学習しています。
これから平日は毎日何かしらアウトプットのため投稿を続ける予定です。
今回は特定の数字が存在するかどうかを判定するプログラムをinclude?メソッドを使用して実装していきます。

# 問題
以下の要件を満たすarray123メソッドを実装します。

・配列内に1,2,3が全て入っている場合は、「True」と出力する
・配列内に1,2,3の全てが入っていない場合は、「False」と出力する

“`Ruby:雛形
def array123(nums)
# 処理を記述
end

# 呼び出し例
array123([1, 1, 2, 3, 1])
“`
include?メソッドについて
[Ruby 3.1 リファレンスマニュアルinstance method String#include?](https://docs.ruby-lang.org/ja/latest/method/String/i/include=3f.html)
[Ruby 3.1 リファレンスマニュアルinstance method Array#

元記事を表示

rubyにおけるcount,size,lengthメソッドの違い

結論からいうと、配列、ハッシュ、文字列によって異なります。
## 配列のとき
ある条件を満たす要素数を知りたいとき→**count**
単に配列の要素数を知りたいとき→**length, size**countも使える

## ハッシュのとき
ある条件を満たすkeyとvalueの要素数を知りたいとき→**count**
単にKeyとvalueの要素数を知りたいとき→**length, size**countも使える

## 文字列のとき
ある条件を満たす要素数を知りたいとき→**count**
単に文字数をしりたいとき→**length, size**countは使えないです

この結論をもとに話を進めていきます。

## lengthとsize
先ほどの説明からも分かる通り、同じメソッドなんです。やってることが同じです。
実際にコードを打っても同じ結果が返ってきます。

## count
countは文字列以外を除いては、lengthとsizeと同じ働きをします。書き方に多少の差はありますが、同じ動きをしてくれます。
では何が違うのか?length/sizeとcountだと処理速度が

元記事を表示

ridgepoleを導入したのに、” Migrations are pendding “とはドユコト? のときに見る記事

# はじめに

今更ながらrailsアプリケーションに**ridgepole**を導入してみました。

その際に`rails migrate`とは別れたはずなのですが、railsのエラー画面で`”Migrations are pendding”`というmigrationファイルと付き合っていたころの見慣れたエラーに出くわしてしまいました。

別れた次の日にばったりいつもの公園で出会ってしまったカップルのように・・・

どうやら復縁を迫られているみたいです。

そこで、そんな人がそんなときに見る用の記事(migrationと未練を残さずお別れする方法)として、やったことをまとめました。

「そもそも**ridgepole**とはなんぞ?」

という方は、偉大な先人たちがたくさん知恵を残してくれているのでそちらをご参照ください!
(導入まで簡単にできます)

https://qiita.com/piggydev/items/12885fed7135e0443ad5

https://re-engines.com/2017/05/03/370/

# 原因調査
## 1. railsの見て

元記事を表示

limitとoffsetについて

activerecordはrailsを使う際にはよく使われるとおもいますが、コマンドを打ったりコードを書いたりする際にlimitとoffsetをちゃんと知らんかったのでまとめようとおもいます。

## limit
これは名前から分かるかもしれませんね。
引数に数値を渡すことで、指定したレコード数を取得できます。
例えば、
“`
User.limit(2)
# 最初のレコードから2件レコードを獲得される
“`

## offset
これは、特定の位置からそれ以降のレコード数を取得できるメソッドです。
“`
User.offset(3)
# 最初から3件目のレコードから最後までのレコードを獲得する
“`

最後にこの2つを合わせた書き方があるんです。

## 途中から指定した件数を取得
以下のようなコードになります。
“`
User.limit(3).offset(7)
# 最初から7番目のレコードから3件値を取得する
“`
次回は、link_toのソースコードをアウトプットしようと思っていますので重めの内容になるかと思います
以上です。何か間違いがございましたら、ご教示いただ

元記事を表示

【Rails】references型

# references型って?
自動的にインデックスと外部キー参照付きのカラムが追加され既存のモデルと生成したモデルを関連付けする下準備をしてくれる。
つまり、既存のテーブルを参照して必要なカラムを自動的に追加して新しいテーブルを作成すること。
*すべてのデータベースで使えるわけではない。

#### 例)

Micropostモデルを作成

“`
# userテーブルに紐付けて、Micropostテーブルを作成
$ rails generate model Micropost content:text user:references
“`

自動生成されたMicropostモデル

“`rb:micropost.rb
class Micropost < ApplicationRecord # belongs_toメソッドでuserモデルに紐付いている(自動的に記述してくれてある) belongs_to :user end ``` Micropostのマイグレーション ```rb:[timestamp]_create_microposts.rb class Crea

元記事を表示

Bootstrap【導入方法】

## Bootstrapの導入方法

RailsにはCSSのデザインテンプレートがありません。
Bootstrapを用いることで、デザインが簡単に整えられます。

導入方法の種類が何個かあります。
– CDNの導入
– ファイルを配置する
– yarnでインストール
– gemでインストール

今回はyarnを用いて導入していきます。

### Bootstrap導入手順

下記コマンドを実行します。
“`
$ yarn add jquery bootstrap@4.5 popper.js
“`
その後に、config/webpack/enviroment.jsを編集します。
下記を記述します。

“`config/webpack/enviroment.js
:
:
const webpack = require(‘wabpack’)
environment.plugins.prepend(
‘Provide’,
new webpack.ProvidePlugin({
$: ‘jquery/src/jquery’,
jQuery: ‘jquery/src/j

元記事を表示

OTHERカテゴリの最新記事