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

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

Refile::InvalidID エラーが起きた時のメモ

## 環境
“`
gem “refile”, require: “refile/rails”, github: ‘manfe/refile’
gem “refile-mini_magick”

Rails 5.2.6
“`

## 1.目標
**Refileの`attachment_image_tag`命令でクラウド上の画像を表示したい。**

## 2.状況
– `attachment_field`フォームで保存した画像を`attachment_image_tag`命令で呼び出そうとしたところ、`Refile::InvalidID in (該当頁)`エラーが発生した。
– マイグレーションファイルに`default: “default.jpg”`等のようなデフォルト値を指定するコードはなかった。(※ https://teratail.com/questions/220379 で、デフォルト値に起因する同挙動エラーの解決報告あり)
– 該当レコードを保存した際にはフォーム・ストロングパラメータ・モデル全てに不手際があった。
– 不手際修正後に作成したレコードを`attachment

元記事を表示

サービス設計について②!

#①.結論!

設計の手順には明確な定義がないため、一般的な「要件定義」→「基本設計」→「詳細設計」の順で説明します!

進むごとに開発しやすいような細かい箇所を決定していくようなイメージです!

ここから前回の続きです!

今回は、「基本設計」と「詳細設計」に着目して進めます!

#②.基本設計

要件定義の内容を、開発に必要な内容へまとめることです!

外部設計とも呼ばれます!

今回の基本設計では、アプリケーション制作に必須の要素となる「画面」や「画面遷移の流れ」をまとめていきます!

#③.詳細設計

実際に書くべきコードを洗い出す作業です!

要件定義や基本設計の情報を元に、ユーザーが行う操作(ボタンを押す、フォームを投稿するなど)に対して行われる処理をすべて書き出します!

その上で、実際どのようなコードを書くかを当てはめていきます!

Ruby on Railsであれば「ルーティングはどういったものがあるか、対応するコントローラーとそのアクションはどういったものになるか、モデルは ~」といった内容を表にまとめると良いでしょう!

#④.画面遷移図

アプリの画面がどのよう

元記事を表示

【Rails】acts-as-taggable-onで作成したタグ機能をseedデータに取り入れる

##目的
自作のアプリにダミーユーザーを作成。
その際acts-as-taggable-onで作成したタグの挙動や見栄えの確認をしていきます。

参考:
[Railsにタグ機能をつける。acts-as-taggable-on使用](https://qiita.com/nakamura999/items/56c6426fc5dd640617ce)
[rails acts-as-taggable-on でタグ付け後、タグを使って検索](https://qiita.com/take1457a/items/90465189140ec77b14be)

##環境
windows10 home
Ubuntu 20.04.1 on WSL2
rails 6.0.3
ruby 2.6.6

##seedデータ作成(失敗)
まずはタグ表示無しでデータが作れるか試してみる。

“`seeds.rb
50.times do
user = User.create!(
name: Faker::Games::Pokemon.unique.name,
email: Faker::I

元記事を表示

【Rails】(gem draper) decoratorについてまとめ helperとの使い分け方も

# 概要
**decorator**についてまとめる

# 前提
・sorcery gem 使用
・Userコントローラーにnewアクション作成済み
・new.html.erbにデコレーターでフルネームを表示したい

#流れ
### 1.gemをインストールする
**draper gem** を使用する

https://github.com/drapergem/draper/blob/master/README.md

`bundle install`でインストールし

生成されたすべてのデコレーターが継承するApplicationDecoratorを作成するためにこのコマンドを実行する

“`:ターミナル
rails generate draper:install
“`

### 2.Userデコレーターを作成する

“`:ターミナル
rails generate decorator User
“`

`app/decorators/user_decorator.rb`が作成される:)

フルネームを作成するメソッドを作成していく

“`ruby:app/decorat

元記事を表示

ActiveRecordの#updateについて 

# 前提
Rails 6.1.4
ruby 2.7.1

# はじめに
ActiveRecordの`update`メソッドを使う際、引数に一部の変更したいカラムだけ指定する時があるが、この時指定されていない`attirubte`は`nil`となりバリデーションに引っかかる場合があると思うがどうやって回避されているのだろうか?という疑問を持ったので挙動について詳しく調べていきたいと思う。

今回以下のソースコードを参考にした。
このmoduleには、普段よく使う様々なメソッドについてのコメントやコードが載っており眺めているだけでもかなり面白かった。
[Github](https://github.com/rails/rails/blob/f33d52c95217212cbacc8d5e44b5a8e3cdc6f5b3/activerecord/lib/active_record/persistence.rb#L616)

# `save`
まず始めに`update`メソッドの基礎となる`save`メソッドに紐解いてみる。
[Github](https://github.com/rails

元記事を表示

【Rails 】 flashとflash.nowの使い分けかた。redirect_toとrenderも含めてまとめる

# 概要
**flash**と**flash.now**の使い分けについてまとめる
**redirect_to**と**render**についてもまとめる

#結論
**flash** → **redirect**するときに使用

**flash.now** → **render**するときに使用

#redirectとrenderについて
### redirect_to
>別のURLに対して改めてリクエストを再送信するよう、ブラウザに指令を出す

https://railsguides.jp/layouts_and_rendering.html#redirect-to%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B

>URLを指定して表示

https://railsdoc.com/page/redirect_to

###render
>アプリケーションがブラウザで表示するコンテンツのレンダリング (出力) という力仕事は、ActionController::Base#renderメソッドがほぼ一手に引き受けています。

https://

元記事を表示

【Rails】 falshメッセージを使用する流れ (add_flash_types)

#概要
**flashメッセージ**を使用する流れをまとめた

#用意するもの
**flashメッセージ**部分を作成

“`ruby:shared/_header.html.reb
<% flash.each do |message_type, message| %>

rails sできなくなった件

問題:「rails s」している途中で、ターミナルを閉じてしまい、再度開こうとしても起動中であるとのこと。

解決:
①ps aux | grep アプリ名でプロセス番号を確認
②killコマンドでサーバーを強制停止
以上の手順で解決。
②は「kill -9 プロセス番号」を入力すること。

改善:
今度からは、「control + c」で確実に終了していくようにする。

元記事を表示

【Rails】【JS】GoogleMapで固定した場所にピンを刺したい!【Geocoder】

# はじめに

この記事では, RailsアプリでGoogle Mapを利用する際に、固定した場所を表示する方法を書き記しています。

特徴は以下です。

1. Google MapのAPIを利用
2. 指定した緯度軽度の場所にピンを刺す
2. ピンの情報ウィンドウをクリックすると指定したページに遷移する
2. 遷移したページの指定した場所に移動できる(sectionタグを用いる)
2. ページ遷移をなくすこともできます!!

[この記事](https://qiita.com/nagase_toya/items/e49977efb686ed05eadb)をもとに、GoogleMapの表示ができていることが前提とします。

#1. Viewを編集する

“`js:posts/index.html.erb