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

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

【Ruby on Rails】ActiveStorageで保存した画像のURLを取得したい

#課題
ActiveStorageで保存した画像のURLを簡単に取れると思ったら案外手古摺ったのでメモ。

“`erb:image_tagを使ったerb
<%= image_tag recipe.image.variant(resize: '200x200').processed %>
“`

“`html:実際のHTML

元記事を表示

【注意点まとめ】Ruby 時間(Time型/Date型/DateTime型)をカラムに設定する

# Time型・Date型・DateTime型
### Time型
– UNIXタイムで日時を扱うクラス

“`
irb(main):001:0> Time.now
=> 2021-01-02 01:41:25.0792755 +0000
“`

### Date型
– 日付を扱うクラス

“`
irb(main):004:0> Date.today
=> Sat, 02 Jan 2021
“`

### DateTime型
– 日付と時刻を扱うクラス
– Dateのサブクラスなので、Dateのメソッドが使える

“`
irb(main):003:0> DateTime.now
=> Sat, 02 Jan 2021 01:41:40 +0000
“`

# validation
– いつも通りのやり方(integer型やstring型と同じやり方)が通用しない。
– エラー文を追加するメソッドを独自に定義し、validationとする必要がある。

“`ruby

validate :day_after_today

def day_after_today
e

元記事を表示

ログイン機能において、他者の投稿の編集や削除をできないようにする処理(Rails・初心者向け)

webアプリケーションで他人と投稿を編集したり消すことができたらまずいですよね。
そこで、ログイン機能において他者の投稿の編集や削除ができないようにするための処理を実装していきます。
この記事では簡単な掲示板サイトを想定して説明しております。
Messageモデルやmessagesコントローラーがあるとして、考えてみましょう。

`$ rails g helper sessions`でhelperを用意して、`current_user`と`logged_in?`を実装します。ここは、今回メインで解説する箇所ではないので、簡単な説明で留めておきます。

“`Ruby:app/helpers/sessions_helper.rb
module SessionsHelper
def current_user
@current_user ||= User.find_by(id: session[:user_id])
end

def logged_in?
!!current_user
end
end
“`
`def current_user`は、現在ログイン

元記事を表示

rails db:seedでデータベースに反映されない時の対処法

seedを用いてデータベースにダミーデータを入れる時に使えるseeds.rbの記述方法について書きました。

seeds.rbにデータを記述する時に

“`ruby:seeds.rb
User.create!(name: …)
“`
と上記のようにcreateの後に!をつけることでデータをデータベースに登録失敗した際にエラーを表示してくれるようになります。

元記事を表示

記事の並べ方(昇順・降順)について

#自己紹介
こんにちは!
今回初めて投稿をします。
同じことで何度も悩んでしまわない為の、自分用のメモとして、またアウトプットする事によって記憶の定着に繋がればと思い始めました。

それでも、もしかするとどなたかに拝見していただける機会があるかもしれませんので、少しだけ自己紹介をさせていただきます。
2020年10月中旬より本格的にプログラミングの勉強をスタートさせ、現在はプログラミングスクールも活用し、未経験の中途という形でエンジニア転職を目指している者です。

さて今回の本題に!

#投稿された記事をIDの若い順に並べてください。
この言葉にまず「若い順」ってどういう意味だろうと疑問に感じました。
結果から言うと、答えはそのままの意味で1.2.3.4….となるような数字の小さい順という事でした。
この若い順が一般的な昇順(asc)、その反対が降順(desc)になります。

今回のIDの話で例えると、
・昇順:IDが小さい順。古い記事が上にくる。
・降順:IDが大きい順。新しい記事が先頭にくる。

今回は、コントローラに記述する方法を使用したので残しておく事にします。

1.

元記事を表示

【Rails】slick(スライダー機能)を簡単に導入する方法

#はじめに
簡単~~?~~に実装できると思います。

“slick“とは画像等をスライドショーのように表示させる機能を付けられるjQueryプラグインです。

本記事は**導入方法**と**簡単な実装**のみを紹介します。

「サイトをおしゃれに仕上げたいから、もっと発展的なことを教えてくれ!」という方。
ごめんなさい。

“haml“や“slim“ではなく普通の“html“で記述していますので、初学者の人にとっても分かりやすいはず。。
~~haml.slimで書かれてる記事多すぎだぜ(つらい)~~

また私が最初に導入してエラーを吐いたところも解決方法とともに紹介していきます。
~~誰かが躓くところは皆転ぶ!~~

#こんな人に向けて
1.haml.slimがよくわからない初学者
2.rails に slickを導入したいけど方法が分からない人
3.他の記事を見ながら実装し、エラーを吐かれて詰んだ人 (この記事で詰まったらごめんなさい)

今回はrails 5.2.4を使っています。
またOSはWindowsですが、macでも同じだと思います。(見た目は少し違うかも。

元記事を表示

【Rails奮闘記/Railsチュートリアル編】Railsチュートリアル3章で学んだこと

## はじめに
Railsチュートリアル3章を終えました。
実務に入った上で、ルーティング・コントローラー・ビュー周りとテストを学習しました。
学習した中で、実務に使える内容をまとめました。

## コントローラー生成のコマンド
コントローラーを生成するときのコマンドは以下のようになります。

“`
$ rails g controller (コントローラー名) (アクション名)
“`

generateスクリプトではアクション名をまとめて指定することができる。
Railsチュートリアルでは、アクション名がhome、help、aboutに当たる。

もし、例えばコントローラー名のスペルを間違えた時など、コントローラーをコマンドですでに生成してまったら普通だったら1つ1つのファイルを削除することを考えるかと思います。
では、どうすれば良いか?
そんなときに便利なコマンドが以下のコマンドで、生成したコントローラーのファイルを一挙に削除することができます。

“`
$ rails destroy controller (コントローラー名) (アクション名)
“`

これだけで生成した

元記事を表示

Simple Calendar gemの導入・基本的な使い方

RailsのgemであるSimple Calendarを使ったアプリ開発を行っているので、後学のために、Simple Calendarの導入と基本的な使い方を説明します。

内容的には[simple_calendarの公式GitHub](https://github.com/excid3/simple_calendar)の日本語訳になります。

##Simple Calendarとは
カレンダー表示機能を簡単に実装できるようにしてくれるgemです。

##実行環境
– Ruby 2.6.5
– Rails 6.0.3.4

##Simple Calenderのインストール

`Gemfile`に以下のように記述し、ターミナルで`bundle install`を入力します。

“`:Gemfile
gem “simple_calendar”, “~> 2.0”
“`

“`:ターミナル
bundle install
“`
`application.css`ファイルにデフォルトのスタイルシートを読み込みます。

“`app/assets/stylesheets/applicati

元記事を表示

Gemを追加したら、There was an error parsing `Gemfile`と言われる

## 対象者

タイトルの通り、Gem追加したら、There was an error parsing `Gemfile`というエラーメッセージが出た方

##エラー文を読む(現状把握)

fakerを開発環境、テスト環境に入れようとGemfileに記載。

“`
group :development, :test do

**gem ‘faker’**  ←これを追加

end

“`

そして、bundle installを試みるも、

“`
bundle install
“`

タイトル記載のエラーが出る。

“`
[!] There was an error parsing `Gemfile`: You cannot specify the same gem twice with different version requirements.
You specified: faker (>= 0) and faker (= 2.1.2). Bundler cannot continue.

# from /Users/XXXX/XXXX/XXXX/Gemf

元記事を表示

モデル単体テスト内で、Fakerを使ってランダムな値を生成できるように上書きをする方法

#はじめに
 FakerはFactoryBotでのみ使えるものだと勝手に思っていたけど、RSpecでモデルの単体テストコードを記述するファイルでも使うことができることに気づき、新たに学んだことを記録しておきます。

##Faker

 数字をランダムに生成する記述。

基本的な使い方としては、

“`ruby
Faker::Number.between(from: 5, to: 11) #5以上11以下をランダム生成
“`

条件を減らすこともできます。

“`ruby
Faker::Number.between(from: 11) #11以上をランダム生成
“`
`between`ってあるけど、`to:`を付けなければ、最高値を設けずに値を生成できる。
逆に、

“`ruby
Faker::Number.between(to: 11) #11以下をランダム生成
“`
`from:`を`to:`にすれば、最高値のみを設けて値を生成できる。

###具体的な使い方

####目的
学年を入力する欄で8以上が入力出来ないようになっているかを確認するコードです。

####テス

元記事を表示

indexアクションの設定 自分のメモ

メモ 
database.ymlではデータベースの設定を記述できる
RDBとは表形式でデータを管理できるデータベース
RDBMSはRDBを管理するシステムで、RDBMSの中にはMySQLがある!!

複雑な機能をまとめたものをライブラリという
Gemの情報はGemfile内で管理する

データベースに記録する内容をマイグレーションファイルに記述する時

def change
create_table :tweets do |t|
t.string :name
t.text :image
end

のように記述する t.型 :カラム名  の形で記述
データベースに反映させるときは rails db:migrateコマンドを使用

・ここまでの流れで出来上がったカラム名に対してデータを追加する場合
コンソールを起動

Tweet.create(name: “takashi”, text: “Nice to meet you!”)

これでTweetモデルから作ったtweetsテーブルのnameカラムとimageカラムにそれぞれ情報を保存(create)できたこ

元記事を表示

【Rails奮闘記/Railsチュートリアル編】Herokuコマンドのまとめ

## はじめに
あけましておめでとうございます。
今日から2021年になりました。
本年度もよろしくお願いします。
今回はRailsチュートリアルのHerokuコマンドについて自分で学習したことを簡単にまとめました。
ここではHerokuのアカウントの新規アカウントの作成とHerokuをインストールについては省略します。

## Herokuコマンド
Herokuがインストールされてるかどうかを確認したいとき

“`
$ heroku –version
“`

Herokuを開かずにログインしたいとき

“`
$ heroku login –interactive
“`

Herokuに新しいアプリケーションを作成したいとき

“`
$ heroku create
“`

Gitを使ってHerokuにリポジトリをプッシュ

“`
$ git push heroku master
“`

アプリケーションの名前を変更したいとき

“`
$ heroku rename (アプリの名前)
“`

本番環境のログを取得したいとき

“`
$ heroku logs
`

元記事を表示

Rails でDB に保存されたenum の値をattribute_before_type_cast で取得する

# はじめに

Rails でDB に保存されたenum の値を`attribute_before_type_cast` で取得する方法の備忘録です

# 環境

* macOS 10.15.6
* Ruby 2.5.7
* Rails 5.2.3

# 参考URL

元記事を表示

HerokuにDockerのコンテナをpushするときに出たエラー「no basic auth credentials」の解決策

## 問題
HerokuにDockerのコンテナをコマンド「`heroku container:push web`」にてpushしようとすると、下記エラーが発生する。

“`
no basic auth credentials
! Error: docker push exited with Error: 1
“`

## 解決策
下記コマンドにてherokuにログインする。

“`
heroku container:login
“`

## 参考
1. [stackoverflow:『Deploy docker images to heroku』](https://stackoverflow.com/questions/61959667/deploy-docker-images-to-heroku)

元記事を表示

騙されるな!プログラミングの勉強なんて最初はこれだけで十分!

「プログラマーなら最低限これくらい勉強しておかないと…」
「今時、〇〇を使わないなんて…」

**うるせーーーーーーー!!!!!!!**

近頃、プログラミングについての情報発信が多いので、色々と勉強しないといけないと思っている人が多いです。

初心者がDockerを勉強していたり、CI/CDツールを使おうとしていたり…

楽しいならそれでいいのですが、特に必要性もないのに無理に難しい技術を使っても頭に入ってこないと思います。

プログラミングを効率よく習得するなら、勉強するより開発することです。

料理も座学で勉強しまくるより、作りまくったほうが上達しますよね?
プログラミングもそんなもんです。

特にプログラミングをまだ面白いと思えていない方は、情報に振り回されて勉強ばかりしている可能性大です。
上達するためにも、楽しさを知るためにも、簡単なサービスでいいのでさっさと開発してみましょう。

とはいえ知識0では開発することが難しいという意見も分かります。
**そこで下記の対象者のような方が、何をどれくらい勉強すればいいのか簡単に紹介します。**

「対象者」

+ 勉強を始めたばかり

元記事を表示

Docker上のRailsでコントローラーの変更がブラウザに反映されない時の対処法

## 問題
`controller.rb`の変更がブラウザに反映されない。
コンテナを再起動すれば反映されるが、毎回再起動するのは手間がかかる。

## 環境
`Windows 10 home`
`Docker for Windows`
`Rails 6.1`
`Ruby 2.7`

## 解決策
`config\environments\development.rb`内の
`config.file_watcher = ActiveSupport::EventedFileUpdateChecker`を下記コードに修正する。

“`Ruby
config.file_watcher = ActiveSupport::FileUpdateChecker
“`

## わからないこと
下記コードを記載しても解決できる。
Railsガイドを見ても上記コードとの違いがわからなかったので、違いが分かる人がいましたら、ご教授いただければ幸いです。

“`Ruby
config.reload_classes_only_on_change = false
“`
参照:[『Railsガイド』- Ra

元記事を表示

初心者の自分がコードレビューを受けて指摘されたことまとめ

#はじめに
アプリのコードレビューを初めて受けて何点か指摘があったので次からは気を付けて行きたいといった意味を込めて指摘を受けた部分をまとめていく。
なお、指摘を受けた内容はフリマアプリの制作段階でのことである。

##REDMEでのコードレビュー
・deviseを使用したのだがencrypted_passwordというカラムを記述するのを忘れていた。

・メールアドレスは一意性という条件が設けられているにも関わらず一意性制約の記述がなかったこと。

・見本アプリではユーザーの登録時、姓、名、姓(フリガナ)、名(フリガナ)と入力欄が細かく分かれているのに姓名を一緒にしてしまっていたこと。

・誕生日カラムをdate型で年、月、日と一つにするのではなく、単に数字だからという考えでinteger型にしていたこと。

・imageの実装はactive storageを使うためREDMEに記述する必要がないにも関わらず記述していたこと。

・郵便番号はハイフンも含めるためinteger型にする必要があるのにstring型にしていたこと。

・active hashを使用時データはidで保存さ

元記事を表示

【環境構築】Ruby on Rails 6 開発環境を1時間以内に手に入れる

# 内容

「プログラミングをはじめたい!」「Webエンジニアを目指したい!」という思いを持ち始めたプログラミング初学者の方が、Ruby及びそれを使ったフレームワークであるRuby on Railsに挑戦するというのは王道の学習パターンなのではないかと思います。

Ruby on Railsをはじめるにあたって最初に大きな壁として立ちはだかるのが環境構築です。私自身も約3ヶ月前に異業種からの転職でRubyエンジニアとして働きはじめたばかりなので、環境構築などの「プログラミング学習を始める以前の準備」に時間を取られた時のことは記憶に新しいです。

本記事では、一人でも多くのプログラミング初学者の方にRailsの魅力を感じて欲しいという思いから「Ruby on Rails 6 開発環境を1時間以内に手に入れる」ことを目標に、そのための手順を紹介します。

# ゴール

Ruby on Rails6の開発環境を備えたUbuntuの仮想環境をmacOS上に構築する(目標1時間以内)。

# 前提環境

### macOSCatalina バージョン 10.15.7

元記事を表示

【Ruby On Rails】include?を使ってparamsの中身を検索する方法

備忘録です。

# 検索方法

“`ruby
params.require(:モデル名).permit(:カラム名).to_s.include?(“検索ワード”)
“`

to_sと書くことで、”permit(:カラム名)” のカラムに含まれたデータを文字列として扱ってくれます。

# updateできる場合の例

例①

“`controller.rb

def update
if params.require(:fridge).permit(:icecream).to_s.include?(“ガリガリ君”)
@fridge.update(fridge_params)
redirect_to root_path
else
render :edit
end
end

def fridge_params
params.require(:fridge).permit(:vegetable, :meat, :icecream).merge(user_id: current_user.id)
en

元記事を表示

2020年プログラミング学習アウトプットの総括

#はじめに
 2020年最後の投稿は、今年投稿した中で、特に力を入れたものやそれに関連する投稿をまとめてみました。

##Rails編

###deviseでユーザー管理機能

– [初見で難解だったdeviseを改めてまとめてみた](https://qiita.com/TerToEer_sho/items/b5523ad100d08126a547)

– [続・初見で難解だったdeviseを改めてまとめてみた](https://qiita.com/TerToEer_sho/items/9231d4fd8155dd3063be)

– [ブラックボックスに感じていたdeviseのコントローラーを触ってみた
](https://qiita.com/TerToEer_sho/items/edb101ce4dcbfd45b4a0)

– [本日の学習まとめ ユーザー管理機能実装にて](https://qiita.com/TerToEer_sho/items/36ef668e52883e9939a4)

– [deviseでサインインのエラーハンドリング の方法](https://qiita

元記事を表示

OTHERカテゴリの最新記事