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

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

Railsでルーティングの一覧を見る方法

ターミナルで↓を実行します。
routes.rbで設定されたパスとHTTPメソッドの一覧を表示できます。

“`
bin/rails routes
“`

オプション“`-c“`にコントローラ名をつけると、そのコントローラへのルーティングのみが表示されます。
例えば“`members_controller.erb“`のルーティングを見たい時↓

“`
bin/rails routes -c members
“`


実行環境
Rails 6.0.2.2
Rails 5.0.7.2

元記事を表示

railsで複数の項目から絞り込み検索を実装する際に、collection_check_boxesの引数の書き方で困ったこと

railsで検索機能を実装する際に、collection_check_boxesを使用した。
**投稿(post)にcategory(種類:kind,場所:place)**を設け一覧画面から検索できるように実装した。
今回は複数の項目から絞り込み検索機能を実装する。
初めてチェックボックスを使用するのでググりながら実装してみた結果が以下である。

“`ruby
<%= form_for @post do |f| %>

<%= f.collection_check_boxes(:category_ids, category.all, :id, :kind) do |ki| %>

<%= ki.label class: 'form-check-label' do %>
<%= ki.check_box class: 'form-check_input' %>
<%= ki.text %>

元記事を表示

Sessionはブラウザを閉じると消去されるように設計されたCookieであり、それをやり取りするメソッドだった: Railsチュートリアル備忘録 – RailsのSessionとは?

# Sessionはブラウザを閉じると消去されるように設計されたCookieであり、それをやり取りするメソッドだった: Railsチュートリアル備忘録 – RailsのSessionとは?

## Abstract: RailsのSessionとは

Progateのころから気づけば隣にいた`session`

Railsチュートリアルを進めていくと

セッションとかいう変数みたいなものと
それを補足するCookieを利用したログイン維持の仕組み
というモヤモヤした感じを抱いていたが実際は

どちらも

– HTMLをステートフルにするための仕組み
– デフォルトではどちらもCookieに保存される

ただし

– sessionはRailsが実装してくれていたのに対して, Cookieによるログイン維持は後から実装した
– sessionは期限あり(デフォルト?)に対して, 後者は永続的(意図的に設計した)

期限付きCookieを利用した
セッションというHTMLをステートフル化するための仕組みを
**開発者が意図することなく**実装してくれていたのがRailにおけるsession

元記事を表示

rails-erdがエラーで使えない! Graphvizが必要です

# 環境
Vagrant + Ubuntu 16.04.5 LTS
Rails 5.2.4.2

# はじめに

**rails-erd**とは、ER図のPDFファイルを自動作成してくれるgemです。**Gemfile**に**gem ‘rails-erd’**を記述して、**bundle install**すると、**rails erd**コマンドでPDFファイルが作成されるようなのだが、エラーが出てきたので、そのトラブルシューティングです。

# 手順

**rails erd**コマンドで、このようなエラーが出てきます。

“`
$rails erd
rails aborted!
Unable to find GraphViz’s “dot” executable. Please visit https://voormedia.github.io/rails-erd/install.html for installation instructions.
/vagrant/syougai/bin/rails:9:in `
/vagrant/syo

元記事を表示

データベースの操作

#はじめに
mysqlというデータベース管理システムのデータベースをターミナルから操作する方法をまとめてみました。

#mysql接続
SQLを実行するために、まずはデータベースへ接続をする必要があります。

“`
% mysql -u root
“`
![代替テキスト](https://i.gyazo.com/00df4656e0b044f9bc18df667c2f6dee.png)
このような画面が表示されれば正常に接続できてます。

#データベースの確認
自身のデータベースが全て出てきます。

“`
mysql> SHOW DATABASES;
“`

#使用したいデータベースの選択

“`
mysql> USE データベース名;
“`
![代替テキスト](https://i.gyazo.com/3296973b87a3bfb72a6a8f4ade36e45b.png)
となれば正常です。

#選択したデータベースのテーブルを確認
“`
mysql> SHOW TABLES;
“`

#テーブル構造の確認
“`
mysql> SHOW columns FROM

元記事を表示

地図上にマーカーを落とし、その場所の緯度経度を取得する方法

GoogleMap APIを使い、地図上にマーカーを落とし、その場所の緯度経度を取得する方法を学んだので備忘録のため、書きます。
※APIキーは事前に取得している前提

###緯度・経度の入れ物を作る
new・editのページを想定して作っています。

“`html:_form.html.erb
<%= form_with(model: place, local: true) do |form| %>
<% if place.errors.any? %>

<%= pluralize(place.errors.count, "error") %> prohibited this place from being saved:

    <% place.errors.full_messages.each do |message| %>

  • <%= message %>
  • <% end %>

元記事を表示

dockerでERROR: An HTTP request took too long to complete. と表示されるエラー

# 問題

ERROR: An HTTP request took too long to complete. と表示される。

“`
ERROR: An HTTP request took too long to complete. Retry with –verbose to obtain debug information.
If you encounter this issue regularly because of slow network conditions, consider setting COMPOSE_HTTP_TIMEOUT to a higher value (current value: 60).
“`

# 原因?

EC2のメモリ容量不足?

# 解決法

停止コンテナ一括削除

“`
$ docker container prune
“`
全コンテナ一括削除

“`
$ docker rm -f `docker ps -a -q`
“`
再起動

“`
$ docker-compose up
“`

解決!

# 参考
https

元記事を表示

AWSでRailsを使ったサンプルアプリ作成進行状況

最近Webアプリ開発をしています。はっきりいって正直ステマに近い投稿なんですが、お察しを。
えと、AWSのIDEを使って、ほかのプログラマと共同制作を最近始めました。

まだトップページのみですが、開発環境は以下のようにこんな感じです

| | | |
|:—————–|——————:|:——————:|
| 開発言語 | Ruby |
| フレームワーク | Ruby on Rails5 |
| クラウドIDE | AWS |
| データベース | sqlite3 |

AWS楽ですね
無料枠であればすぐ構築できますし、メンバーに権限わたして一緒に開発進められる

とりあえず、rails new~ でアプリファイル作って、そのあとにsqliteのバージョン更新をして、マイグレーションファイルの更新して
rails db…

rails sでサーバー起動してちゃんと実装できているかつ

元記事を表示

[rspec] ユーザーモデルのemailのテストが通らない(case_sensitive: false)

##前提

“`Rails 6.0.3.1“`
“`ruby 2.6.3“`
“`RSpec 3.6“`

##一意性のテストにて
メールアドレスのバリデーションを“`RSpec“`でテストをしていました。
以下がバリデーションです。

“`

validates :email, presence: true,
length: { maximum: 255 },
format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false }

“`

今回引っ掛かったのが、ここ。

“`app/models/user.rb

uniqueness: { case_sensitive: false }

“`

下記が、メールアドレスの一意性を確かめるテスト内容になります。

“`spec/models/user_spec.rb
it “is invalid if email is not uniqueness ” do
duplicate_user = @user.dup

元記事を表示

railsでアプリを作る時【備忘録】

#①まずターミナルでrails new
“` ruby
rails new [アプリ名][オプション]
“`
 今回私はデータベースを指定しました

“`
rails new [アプリ名]-d mysql
“`

#②rails db:create
 データベースの作成 
  この後にテーブルやカラムを追加します。

#③git hubでローカルとリポジトリを接続
 
 ○順序
 ・GitHub desktopでローカルのファイルを管理する
  これはdesktopでaddなんとかで設定する

 ・つづいて、GitHubにリモートリポジトリを作る
  作成したらそこでhttpのリンクがあるからそれをコピーして
  ターミナルで下記のように打つ(httpからはコピペ)

“`
git remote add origin https://github.com/ta1ka2shi3/redchaps.git
“`

 

#④必要なgemのインストール

“`
gem ‘pry-rails’
gem ‘pry-byebug’
gem ‘font-awesome

元記事を表示

chat-spaceの応用実装

# はじめに

この記事は、某プログラミングスクールに登場する、通称chat-spaceの応用実装についてまとめたものです。スクールを卒業した際に、応用実装があったことを思い出したので記事にしてみました。

早速ですが、応用実装とはどんなものかというと、グループに追加したユーザーを検索してもでないようにするというものです。
![画面収録 2020-06-14 22.54.10.mov.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616088/d9e40190-f2a5-e105-f9e2-8acbe9eb821d.gif)

この機能の動作の流れといたしましては。
#### ① キーワード(input)を入力する。
#### ② イベントが発生した際に、チャットメンバーに表示されているユーザーのidを配列(ids)で取得
#### ③ あとは、Ajax通信の際にinputとidsを渡し、idsを含まないユーザを検索するだけです。

以上のことをソースコードで記述すると、次の通りになります(変更した部分

元記事を表示

[Rails] jQueryを利用する

##はじめに
**1.gemの追加**

“`ruby:Gemfile
gem “jquery-rails”
“`
bundle installを行いましょう

**2.application.jsファイルに追記する**

“`ruby:app/assets/javascripts/application.js
//= require jquery // ←ここを追加
//= require rails-ujs
//= require activestorage
//= require turbolinks
//= require_tree .
“`

これで、jQueryを使う準備が整いました。
##【イベントの記述】
セレクタ名にはclass,idの=の後が入ることが多い
.はclass名の前に #はid名の前につく

“`ruby:
$(‘.セレクタ名’).イベント名(function(){
 イベント発生時に行われる処理
});
“`
**イベントの一覧**

| click | 指定した要素で左クリックしたときに処理がおこなわれる。 |
|:–

元記事を表示

payjpを使ってクレジットカード機能を導入しちゃおうってわけ(準備編)

暑くなってきましたね。:flag_jp:
コロナの影響あるからってアタシ負けないんだから。:pouting_cat:
そろそろエアコンの掃除でもしようかね!!

話がそれましたね。
そう今回はpayjpに関して。
みんな焦んないで。
タブ開きすぎ!ってパソコンあるある言うからちょっと待って。
さぁ行くわよ!!!:older_woman_tone5:

#1 payjpってなんぞや??

初めての方もいるかもしれないので簡単に説明すると、
クレジットカード機能を実装するにあたってすごく便利なものです。
それはなぜか?

フリマアプリで考えるとまずテーブルは

・userテーブル
・商品テーブル
・決済テーブル

以上が購入にあたり必要になります。
メルカリ使ったことある人ならわかると思うんですが、商品購入の際にクレジットカード決済ができる。
そんで一度使ったことあるクレジットカードは保存してあるので、次が登録せず使える。
ですがこれいざ作るってなって考えてみたらこう思うわけ。

### DBにクレジットカード情報丸々保存して、それ流出したら大問題ですやん!!!!

そうなのそうなの。

元記事を表示

【Rails】投稿に対してタグ付けする機能+タグで投稿を絞り込み表示する機能の実装手順

## 概要
__・自身の投稿にタグ付けできるようにする機能を実装する。__
__・その投稿に付けられたタグで絞り込み検索ができるようになる機能を実装する。__

## 前提
__環境__
 Ruby 2.6系
 Rails 5.2系

__ライブラリ__
 Slim

__上記環境のRailsアプリ雛形__
 [Railsアプリケーションセットアップして、deviseとSlimを導入する手順](https://qiita.com/kurawo___D/items/5fad1e08ae29c0bc5a45)

__↓完成形イメージ↓__
![ezgif.com-video-to-gif (2).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606750/dc85e1e7-d242-5a1d-6e80-2ad022fbd775.gif)

## 実装

### 1.モデル設計とアソシエーション

![スクリーンショット 2020-06-13 20.14.13.png](https://qiita-image

元記事を表示

[デプロイエラー] Mysql2::Error: Table ‘〜’ already exists: CREATE TABLE `〜`

# これは何
Railsでチーム開発中、Capistranoでの自動デプロイ時のエラー
「Mysql2::Error: Table ‘〜’ already exists: CREATE TABLE `〜`」がでた時の対処方法。
直訳すると、「既にテーブルがあるから無理だよ」ですね。

※未経験初心者が書いています。ここ違うよ!もっと良い方法あるよ!という事がありましたら、ご指摘いただけると幸いです。

# 対処方法
結論から言うと、データベースのスクラップアンドビルドです。あなた自身が想像と破壊の神シヴァになることだったのです。

真面目にやります。。。
まずはターミナルからSSHログインしてAWSに接続します。
ログイン後はmysqlに接続して中身を見てみましょう。

“`
[ec2-user@]$ mysql -u root -p

# mysqlのパスワードです
Enter password:
“`

mysqlに入ったら、本番環境のデータベースを見てみます。

“`

mysql> show databases;
+—————————

元記事を表示

[Rails]遷移元のURLを取得してリダイレクトする方法

# やりたいこと
– 商品ページから購入ボタンを押す
– クレジットカードが登録されていないと、カード登録画面に遷移
– カード登録後、**購入しようとしてた商品ページに戻る(リダイレクトする)**

元々は、カード登録後カード情報を閲覧する画面に遷移していたので、購入しようとしていた商品をまた探して購入ボタンを押す、というユーザーにとても不親切な挙動でした。

## 元の状況

購入ボタン押す → カード登録画面に遷移
![92e9b1521895f97a6e1f2c4a46c7ce3f.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/602794/6b80910e-7b1f-82d0-9cc8-64a6ad3f89fa.gif)

カード登録 → カード情報閲覧画面に遷移
![e94f61e09decdfded6051eabaa91cd4b.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/602794/daa419ac-

元記事を表示

railsチュートリアル格闘記Ⅲ

#環境
ruby 2.6.3
rails 6.0.3
AWS cloud9

# 10.3.4 ユーザー一覧のテスト
“`
michael:
name: Michael Example
email: michael@example.com
password_digest: <%= User.digest('password') %>

archer:
name: Sterling Archer
email: duchess@example.gov
password_digest: <%= User.digest('password') %>

lana:
name: Lana Kane
email: hands@example.gov
password_digest: <%= User.digest('password') %>

malory:
name: Malory Archer
email: boss@example.gov
password_digest: <%= User.digest('password') %>

<%

元記事を表示

Railsでテーブル名のマッピングを明示的に指定する

品詞の末尾がsで終わるものをモデル名にしていた場合に複数形と認識されていました。

その際に想定しているテーブルを参照出来なかった為、明示的にテーブル名を指定する方法についてメモをします。

## モデル名の末尾をsに設定
機能としてはMicrosoft Teamsとの連携を実装していました。

オプションで連携使用の有無を設定出来るようにxxxTeamsのようにテーブル名を設定しました。

この際xxx_teamsesテーブルを参照して欲しいですが・・・。(モデル名をTeamにして、テーブル名をTeamsにすれば良いのですが、、、)

“`
MySQL::Error: Table doesn`t exist
“`
「テーブルが存在していませんよ」というエラーが返ってきます。

## 解決方法
– https://railsguides.jp/active_record_basics.html
– https://www.it-swarm.dev/ja/ruby-on-rails/rails%E3%81%A7%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AE%

元記事を表示

【Rails】 gem ancestry カテゴリー機能実装について

# はじめに
草野と申します。
今回の投稿は、プログラミングスクールで学んだことを復習がてらにアウトプットを行います。
自分用のメモのため、文章は拙いですが、少しでも初学者の助けになればと考えています。
内容は、表題にもあるとおり、スクールで行ったチーム開発によるフリマアプリのカテゴリー機能実装についてです。未熟な点も多いと思います。不備等ありましたらご指摘ください。随時改善して行こうと思います。

# 完成品
親カテゴリーが選択されるとイベント発火し、子、孫とセレクトボックスが表示されます。

**商品出品時のカテゴリー登録画面**
[![Image from Gyazo](https://i.gyazo.com/2cdfbf0c9404425a2b4d6d5c2816058e.gif)](https://gyazo.com/2cdfbf0c9404425a2b4d6d5c2816058e)

**商品詳細情報のカテゴリー情報呼び出し画面**
qiita_カテゴリー商品情報.png【Rails】enumの使い方 

##はじめに
RubyやRailsで、Enumの使い方を
忘れない為のメモ。

##enumとは?
「Enum」は「列挙型」のこと。
・DBにはint型やboolean型で登録され、数値に紐付く任意のキー名を付けることができる。
・ソースコードでは、紐付くキー名を用いれる。

利点
・データ型をintegerにするとDBに数字で登録されるが、数字だけだと数字が持つ意味が共有出来ない。
・文字列として定義していたらタイポする可能性が多くなるが、enumを使うとその心配がない。
・修正の際に楽。

##定義方法
モデルに対してenumを定義する必要があります。
定義方法は、2通りあります。
**1.定義のみ**
**2.定義に数値を指定**
#定義のみ指定
配列で定義をします。定義順に0から順に紐付けされます。
下記の例では昨日→0、今日→1、明日→2と自動的に振り分けされる。
enum カラム名:[:付けたいキー名]でenumを指定していきます。

**※[ ]なのと : の位置に注意**

“`ruby:モデルのファイル
enum カラム名: [ :昨日, :今日, :明日

元記事を表示

OTHERカテゴリの最新記事