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

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

【ActiveAdmin】フォームのタイトル(パネル)部分を色付けする

記事はこちら↓
[【ActiveAdmin】フォームのタイトル(パネル)部分を色付けする](https://www.malanka.tech/entry/Coloring-the-title-part-of-the-form-in-ActiveAdmin)

元記事を表示

【Rails】多対多 の関連付けで、中間テーブルに複数レコードを登録する方法

# 実装したい機能
多対多のモデル関係で、チェックボックスで、選択した値を複数、中間テーブルに登録させたい。
実装する際に、かなりハマってしまったので備忘録として残しておく。

## 環境
`Rails 5.2`
`Ruby 2.5.1`
`MacOSX`

## モデル関係
– プロジェクトモデル

“`Ruby
class Project < ApplicationRecord has_many :project_phases, dependent: :destroy has_many :mst_phases, through: :project_phases end ``` - プロジェクト工程 ```Ruby class ProjectPhase < ApplicationRecord belongs_to :project belongs_to :mst_phase end ``` - 工程マスタ ```Ruby class MstPhase < ApplicationRecord has_many :project_phases end `

元記事を表示

【Ruby/namespace】Rubyでよく見る「:: ←これ」を深ぼる

# 概要
現在、プログラミング言語RubyとそのWebフレームワークRuby on Railsを学習中です。
その中でよく見かける記号があります。

“::“←これです。

* “Devise::RegistrationsController“や
* “ActiveHash::Base“や
* “ActiveRecord::Migration“など

初学者目線でいうと「クラス名とかでよく見るな」くらいにしか思ってなかったこの記号。
もちろんですが、ちゃんと意味があります。

この記事ではその概要について紹介します。

# ::←これの正体

さて、特に意識することなく使っていた「::」←これ、ですが。
理解するには“名前空間“という概念を知る必要があります。

## 名前空間とは?
では、名前空間とは何でしょうか?
簡単に言うと“メソッドや変数を管理する範囲“のことです。
同じ“話す“でもアメリカと日本では言葉が違いますし、同じ“太郎“でも1組と2組の太郎は別人です。

このように、“同じ名前であることによるコンフリクト(衝突)が起きない

元記事を表示

ユーザー新規登録時に、ActiveRecord::NotNullViolation というエラーが出たのとそれに対処した話。

## ユーザー新規登録におけるエラー

ユーザー管理機能を実装中に下記のエラーが出ました。
![151aa02ffd6f364ebe9ba332e3ba4fde.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665867/23abb1f1-b63c-1bc8-27bd-c7eb4ddb3393.png)

#### 白抜きのエラーについて

“`
ActiveRecord::NotNullViolation in Devise::RegistrationsController#create
“`

参考のサイトで調べてみると

“`
「このエラーはDB制約上、NULL にしてはいけない項目が NULL のまま保存が実行されたことによるエラー」
“`
とありました。
#### 確認したこと
##### ①マイグレーションファイル
上記の画像エラー文に

“`
Mysql2::Error: Field ‘prefecture_address’ doesn’t have a default valu

元記事を表示

【ActiveAdmin】ヘッダー下のデフォルト作成ボタンを非表示にする

記事はこちら↓
[【ActiveAdmin】ヘッダー下のデフォルト作成ボタンを非表示にする](https://www.malanka.tech/entry/Hide-the-Create-Default-button-under-the-header-in-ActiveAdmin)

元記事を表示

【Rails】「入力」→「確認画面」→「保存」→「表示」

#はじめに
入力後、確認画面をはさんで保存する方が、ユーザーにとって優しいと思いとました。
「入力」→「確認画面」→「保存」→「表示」の方法を紹介します。

###目次
1. 基礎構築
2. 「入力」→「確認画面」→「保存」の実装
3. 「入力画面」
4. 「確認画面」
5. 「保存」と「表示」

#開発環境
ruby 2.6.5
rails 6.0.0
データベース mysql2 0.4.4

#実装
それでは実装して行きます〜

#1. 基礎構築

####コントローラー作成

“`ターミナル.
rails g controller new create show
“`

“`app/controllers/events_controller.rb
class UsersController < ApplicationController def new end def create end def show end end ``` この時同時にビューの雛形も自動生成もされます。 ####ルーティング ルーティングも設定

元記事を表示

既存のRailsアプリにVue.jsを導入した

# Vue.jsというのがカッコいいらしい
 カッコよくしたかった。個人開発中のサイトをカッコよくしたかった。シュッとやったらグイーンとなって、ババーンとなるようなものにしたかった。Vue.jsを導入することにした。

 彼の動作原理はまだわかっていないが、学習コストが低く、ドキュメントが充実しているらしいのでやっていくことにした。

# webpackerとyarnの導入

 まずはwebpackerとyarnというのが必要らしい。

 webpackerとはモジュールバンドラーというやつで、複数のjavascriptをひとつにまとめる役割をもっている。なんのことかよく分からない。ただ、ここにいま嵌ってしまうとVue.jsを使ったかっこいいあれはできない。後回し。

yarnとはパッケージマネージャというものらしい。npmの強化バージョンらしい。ライブラリの追加や管理を容易にするようだ。そうか。

 どちらともすでに私のRailsアプリには導入されていた。Gemfileには以下の記述があった。

“`
gem “webpacker”, “~> 4.x”
“`

 yarnはすで

元記事を表示

Ruby Test ExplorerでRailsのMinitestを走らせた時にbreakpointが効かない

# 背景

VSCodeの自動テストを取り扱う拡張機能に [Test Explorer UI](https://marketplace.visualstudio.com/items?itemName=hbenl.vscode-test-explorer)がある。
この拡張機能のruby用のadapterが[Ruby Test Explorer](https://marketplace.visualstudio.com/items?itemName=connorshea.vscode-ruby-test-adapter)で、rspecとminitestを扱える。

また、Rubyを対象にBreakpointやstep実行が使えるようになる[Ruby](https://marketplace.visualstudio.com/items?itemName=rebornix.Ruby)という拡張機能もある。
こちらのバックエンドは`ruby-debug-ide`, `debase`というgemで実現されている。

Ruby Test Explorerは、debug iconの駆動の際に、拡

元記事を表示

MVCモデルとは

MVCモデルについてきちんと理解しようと思ったので記事にしてみました。

初心者なため認識違いがあった場合などは是非ご指摘下さい。

#MVCとは

・ Model
DB関連の処理を担当
・ View
画面表示(HTML)を担当
・ Controller
リクエスト受付&レスポンス返却

このようにプログラムの担当をMVCの3つに分割する考え方のことをMVCモデルと呼びます。

#処理の流れ
![dd3e967f498ce117d1cdd29953e92cdc.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680978/b7e77096-8669-7ec5-ef68-3d5302bf32e5.png)

まずはユーザーが何かしらのURLをリクエストします。するとフレームワークではルーターというところがURLのリク

元記事を表示

Rails6(Cloud9+Ubuntu)+MySQLでherokuデプロイ

1 Heroku CLI Download and install

“`
$ sudo curl https://cli-assets.heroku.com/install-ubuntu.sh | sh

$ heroku –version
“`

2 Heroku ログイン
※クレジットカードを登録したアカウント

“`
$ cd appname
$ heroku login –interactive
# メールアドレスとパスワードを求められるので、入力しエンターをクリック
Enter your Heroku credentials:
Email: test@test.com
Password: *********
“`
3 次に鍵をHerokuに追加します。

“`
heroku keys:add
“`

4 Herokuにアップロードしますか?と聞かれるのでyを入力する

“`
? Would you like to upload it to Heroku? (Y/n)

#すると以下のようなコードが出てきたら成功です。
Uploading /home/ec2

元記事を表示

Ruby TGIFを解く

#rubyでTGIFを解く
#問題
TGIFとは、Thank God It’s Friday の頭文字を取ったもので、

キリスト教の文化圏において、仕事や学校の長い一週間を終えて週末を迎えられることに感謝する言葉です。

入力として、平日の曜日が与えられるので、
・Monday, Tuesday, Wednesday, Thursday であれば、Still (曜日名)
・Friday であれば、TGIF
を出力してください。
#入力される値
入力は以下のフォーマットで与えられます

s
#期待する出力
入力として与えられた曜日が、
・Monday, Tuesday, Wednesday, Thursday のいずれかであれば、Still (曜日名)
・Friday であれば、TGIF
を出力してください。
#入力例1
Monday
#出力例1
Still Monday
#入力例2
Friday
#出力例2
TGIF
#私の答え
“`java:
w = gets.to_s
if w == “Monday” || w == “Tuesday” || w == “Wednesday”

元記事を表示

CircleCIでToo long with no output (exceeded 10m0s)というエラーが出たときの解決方法

CircleCIを実行したら以下のようなエラーがでました。
(当時のログを探すのに少し時間がかかるため、commandの部分は完全再現してません)

“`
$ bundle exec rspec spec/

# Too long with no output (exceeded 10m0s)
“`

デフォルトの無出力タイムアウト時間は10分に設定されており、これをこえてしまったためビルドが取り消されてしまったようです。

僕の場合は、なんらかが原因でRSpecの実行時間が10分超えてしまい、CIが停止してしまっていました。
(通常は1分半とかでおわります。)

“`yml:.circleci/config.yml

– run:
name: run rspec
command: |
mkdir /tmp/test-results
TEST_FILES=”$(circleci tests glob “spec/**/*_spec.rb” | \
circleci

元記事を表示

ルーティングのネストを使って、任意のURLにしてみた

##ルーティングのネストとは
 ルーティングを入れ子にすること。そうすることで、URLに親のコントローラー名を入れることができる。また、アソシエーションしている、別のモデルのid情報を取得することもできる。
個別のページに遷移させたい場合にネストするとよい。
##ネストのルーティング方法

“`ruby:routes.rb
resources :親となるコントローラー do
resources :子となるコントローラー
end
“`
子となるコントローラーを`do〜end`で囲む。
“`
ex)

“`ruby

<%= link_to 'チャットルーム', class_room_messages_path(current_user.class_room.id) %>
“`

元記事を表示

自分がコメント、メッセージした記事や取引のみ取得する方法【includes】

# はじめに
よくメルカリや、ジモティーなどと言ったフリマ要素のあるのサイトでは
マイページに自分が出品した取引一覧とは別に、
`やりとり中の取引一覧`がよく表示されていますよね

取引の度にブックマークするとなかなか面倒くさいので、
何気に重宝する機能なのではないでしょうか

今日はそれを実現するよう実装をしていきたいと思います

# モデル間の関係
![スクリーンショット 2020-11-06 20.06.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/728987/30215029-7345-4923-0962-72005b1ef89e.png)

例のように記事(取引)をarticle、コメント(やりとり)をcomment、とし
各モデルは上記のようなアソシエーションにします。

“` user.rb
has_many :articles
has_many :comments
“`

“` article.rb
belongs_to :user
has_many :c

元記事を表示

【Ruby/Rails】Userモデルに子モデルを効率よく紐付ける手順

# はじめに
## やりたいこと
– deviseを用いてUser登録
– 子モデルProfileにプロフィール画像等のデータを扱わせる
– userレコードの生成と同時にprofileレコードも生成する
– profileレコードにデフォルトでデータを入れる

## やる理由
– できるだけdeviseを触りたくない
– profileレコードを同時生成してnew&createアクションを省略
– デフォルトでデータを入れることで空カラムによる厄介事を回避

## やってみて
思ったより簡単にできました。特にimage(プロフィール画像)を生成時にアタッチしておくのは今後も使えそうなので備忘しておきます。

## 参考にした記事
[url4u.jp >> Profile モデルを定義して Devise の User に紐付ける](https://url4u.jp/rails-523-devise-profile-association/)

# 手順

前提として

1. deviseのインストール
2. 各モデル(User、Profile)の作成&マイグレーション
3. devis

元記事を表示

putsメソッド

#putsメソッド
**Rubyに用意された、ターミナルに値を出力するメソッドです。**
putsに続けて値を記述すると、その値をターミナルに出力します。

“`java:【例】putsメソッド
name = “Taro”

# ターミナルに出力する
puts name
“`

“`java:【例】ターミナル
# nameの値が出力される
=> “Taro”
“`

#rubyファイルを以下のように編集して下さい。
それでは、実際にコードを書きましょう。
rubyファイルを以下のように編集します。

“`java:rubyファイル
input = “こんにちは”

puts “入力した値は#{input}です”
“`

#まとめ

**putsメソッドとは、ターミナルに値を出力するメソッド。**

#####以上。

元記事を表示

Railsモデル単体テストコードにおける、パスワードのダミーデータ生成注意点

#記事投稿の背景
モデル単体テストにおけるダミーデータ作成のため、Fakerを活用していた。Fakerは名前、email等をランダムに生成する。しかしパスワードデータを生成する場合、注意が必要だと分かった(後述)。そのため、注意点と対処方法を備忘録として記事を投稿する。

**補足**
FakerとはRuby on RailsのGemの一つである。fakerの活用により、値をランダムに生成できる。詳細は下記リンク先を参照のこと。

[Faker公式のGithub](https://github.com/faker-ruby/faker/blob/master/doc/default/internet.md)

#Fakerを用いたパスワード生成の注意点
下記のような記述により、パスワードカラムへのダミーデータを生成した。

“`ruby:user.rb
FactoryBot.define do
factor

元記事を表示

EC2でデプロイしたRailsアプリ内のReact.jsのCSSが読み込めない

#この記事いついて
私の備忘録としてここに残します。

Railsで作成したアプリのフロント部分にReact.jsを採用し、そこにCSSを読み込ませました。ローカル環境ではCSSが読み込まれていたのに、EC2でデプロイした際には読み込まれない。そんな状況の解決方法を記述します。

#ディレクトリ構成
appディレクトリ直下

“`
.
├── assets
│   ├── config
│   ├── images
│   └── stylesheets
├── channels
│   └── application_cable
├── controllers
│   ├── concerns
│   └── users
├── helpers
├── javascript
│   ├── channels
│   ├── components
│   └── packs
“`

javascriptディレクトリ

“`
.
├── channels
│   ├── consumer.js
│   └── index.js
├── comment.js
├── compone

元記事を表示

Ruby on rails学習記録 -2020.10.06

お店紹介サイトを作る

お店リストの自動生成
“`$ rails generate scaffold shop category_id:integer name:string address:string
$ rails db:migrate’“`

カテゴリストとお店リストのモデルの関連付け

“`app/model/category.rb
class Category < ApplicationRecord has_many :shops end ``` ```app/models/shop.rb class Shop < ApplicationRecord belongs_to :category end ``` 登録・修正フォームで、カテゴリを選択できるようにする ```app/views/shops/_form.html.erb

<%= f.label :category_id %>
<%= f.select :category_id, Category.all.map{|o| [o.name

元記事を表示

[rails] サーバーが動かなくなった事件

#事件内容

突然サーバーが動かなくなり
control Cを押してもサーバーダウンできなくなってしまった。

#解決方法

ターミナルで以下のコマンドをうつ
これは開いてるファイルを一覧表示してくれます

“`
lsof -i
“`

0000のところは PIDの番号を打ってください
ruby のPIDの番号を打ってください

“`
kill -9 0000
“`

###私はこれで解決しました!

サーバー止まったりしたら焦りますよねw
何がエラーなのかも出てこなくて汗だくでした
( railsのサーバーはバグる?ことが多いとどこかの偉い人が
いってたな…知らんけど…)

元記事を表示

OTHERカテゴリの最新記事