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

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

【Rails】モデルの関連付けを行う

##関連付けとは
Railsでは、モデルやテーブル同士の関係を設定することができます。
例えばUserモデルとTaskモデルの関係などを定義します。
(この場合、1人のユーザーが複数のタスクを持っている)

##何がうれしいのか
必要な記述が少なく、シンプルになります。
TODOアプリを例に説明すると、以下のように記述が簡素化します。
###タスク作成時
“`ruby
Task.create(title: “パンを買う”, user_id: @user.id)
“`

“`ruby
@user.tasks.create(title: “パンを買う”)
“`
###ユーザー削除時
“`ruby
@tasks = Task.where(user_id: @user.id)
@tasks.each do |task|
task.destroy
end
@user.destroy
“`

“`ruby
@user.destroy
“`

その他、以下のようなメソッドが使えるようになります。

| メソッド | 用途 |
|:–|:–|
| task.user |

元記事を表示

Railsチュートリアル 第13章 ユーザーのマイクロポスト – マイクロポストの作成・削除に関する機能を、テスト駆動開発で実装する

# 別のユーザーに所属するマイクロポストをfixtureに追加する

今後のテストで使うために、マイクロポストのfixtureに対して、最初のテストで使ったユーザーとは別のユーザーに属するマイクロポストを追加していきます。

“`diff:test/fixtures/microposts.yml
…略
+
+ ants:
+ content: “Oh, Is that what you want? Because that’s haw you get ants!”
+ created_at: <%= 2.years.ago %>
+ user: :mkirisame
+
+ zone:
+ content: “Danger zone!”
+ created_at: <%= 3.days.ago %>
+ user: :mkirisame
+
+ tone:
+ content: “I’m sorry. Your words made sense, but your sarcastic tone did not.”
+ created_at: <

元記事を表示

Railsチュートリアル 第13章 ユーザーのマイクロポスト – 【発展】ユーザー情報のパーシャルとマイクロポスト投稿フォームを、テスト駆動開発で実装する

# 内容

Railsチュートリアル第13章の本文中において、テストが書かれることなしに実装されていた以下2つの要素を、テスト駆動で実装してみようというものです。

* ユーザー情報のパーシャル
* マイクロポスト投稿フォーム

# ユーザー情報のパーシャルの実装

## ユーザー情報のパーシャルに含まれているべき要素に対するテスト

Railsチュートリアル本文によれば、サイドバーで表示されるべきユーザー情報のパーシャルには、以下の要素が含まれている必要があります。

* `gravatar_for`クラスを持つ`img`要素
* ユーザー名を内容とする`h1`要素
* マイクロポスト数を含む`span`要素

テストを追加するのは`test/integration/microposts_interface_test.rb`です。追加するテストの内容は以下となります。

“`diff:test/integration/microposts_interface_test.rb
require ‘test_helper’

class MicropostsInterfaceTe

元記事を表示

「Bundler could not find compatible versions for gem」なとき

# 概要
– rails tutorial(2020/1/3現在)にあるとおりにgemfileを編集してbundle installを実行したら、うまくいかなかったときの話。

“` terminal

Bundler could not find compatible versions for gem “actionpack”:
In Gemfile:
rails (~> 6.0.2, >= 6.0.2.1) was resolved to 6.0.2.1, which depends on
actionpack (= 6.0.2.1)

rails-controller-testing (= 1.0.2) was resolved to 1.0.2, which depends on
actionpack (~> 5.x, >= 5.0.1)

Bundler could not find compatible versions for gem “listen”:
In Gemfile:
listen (>= 3.0.5,

元記事を表示

WSLでRails6の環境構築

VSCode上で環境構築します。
#WSLを有効にし、Ubuntuをインストール
[こちらの記事](https://qiita.com/Brutus/items/f26af71d3cc6f50d1640)通りに進めていけば簡単にできます。画像付きですごく分かりやすかったです。
UbuntuはLTS版を入れました。
#VSCodeの設定
VSCodeの拡張機能`Remote Development`をインストール。これでWSLに接続して開発ができるようになる。
インストールしたら、VSCodeの一番左下に緑のアイコンがでるのでクリック。
`Remote-WSL: New Window`を選択。これで設定終了。
#Ubuntuのパッケージを最新化
VScodeのターミナルを開いて、2つのコマンドを実行。かなり時間かかりました。
sudoコマンドを使うときに、Ubuntuで設定したパスワードを聞かれるかも。

“`:パッケージの最新化
$ sudo apt update
$ sudo apt upgrade -y
“`
#rbenvのインストール
rbenvは、複数のRubyのバージョン

元記事を表示

Ruby on Rails を学ぶ _No.1

##view(ビュー)

ページや「見た目」を作るためのHTMLファイルです。
ブラウザとrailsの通信でrailsからビューが返され、ページが表示されます。

##controller(コントローラー)

ページを表示するときにrailsの中ではコントローラを経由してビューをブラウザに返します。
具体的には、コントローラと同じ名前のビューフォルダから、あくしょんと同じ名前のHTMLファイルを探してブラウザに返します。

■ コントローラファイルの中身
ファイルの中にtopメソッドが追加されます。コントローラの中のメソッドはアクションと呼ばれます。
→ アクションと同じ名前のHTMLファイルをブラウザに返します。

“`html_controller.rb
class HomeController < ApplicationController def top #homeコントローラのtopアクションに対応するhtmlファイルを返す end end ``` ##ルーティング ブラウザとコントローラを繋ぐ役割があります。 送信されたURLに対してどのコントローラのどのアクシ

元記事を表示

【rails】enumを利用したラジオボタン検索【ransack】

enumを利用したransackのラジオボタン検索で少しつまずいたので備忘録用として投稿

ransackの導入やenumの書き方については端折ります。

“`micropost.rb
enum result: { win: 1, lose: 2, notrade: 3 }
“`

***検索できなかった時***

““_serch_form.html.slim
= search_form_for @q do |f|
h2.my-3 検索
= f.label :result
br.form-check.form-check-inline
= f.radio_button :result_eq, :win, {:checked => true}
= f.radio_button :result_eq, :lose
= f.radio_button :result_eq, :notrade
br
= f.submit nil, class:’btn

元記事を表示

dockerで立ち上げたRailsのキャッシュストアをRedisに設定する

docker-composeを用いてRailsサーバをAPIとして立ち上げ,
Reactで書いたフロントからAPIを叩く構成でアプリケーションを開発しています.

API側の負荷を抑えるため, クエリ結果をキャッシュするためにRedisを導入した時のメモになります.
Docker, docker-composeを用いた環境構築やRedisの概要には触れていませんのでご了承ください.

# 開発環境
“`
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.15.1
BuildVersion: 19B88
$ docker -v
Docker version 19.03.1, build 74b1e89
$ docker-compose -v
docker-compose version 1.24.1, build 4667896b

“`
# Redis導入前
“`Dockerfile:Dockerfile
FROM ruby:2.6.5-slim

# db, js関係の環境をインストール
RUN apt-get upda

元記事を表示

【Rails】form_with/form_forについて【入門】

どんもー、[@snskOgata](https://twitter.com/snskOgata)です。

今回はRails開発におけるヘルパーメソッドform_with/form_forについて深掘りしていこうと思います。
特にform_withに
**・モデルが渡されているときと渡されていないときでの振る舞いの違い
・渡された変数が空の場合と既存のものであった時の場合**
をそれぞれ話していこうと思います。

と、その前にform_withとform_forの違いについて触れておきます。

# 1. form_withとform_forの違いについて
form_withは元々Rails5.1以前のバージョンで使い分けられていたform_forとform_tagをどちらも同様に扱えるようにしたもの、らしいです。
それまでは、関連するモデルが用意されている場合はform_forでモデルを渡してやり、関連するモデルがない場合はurlをform_tagに渡して、それぞれフォームを作っていました。

関連するモデルがない場合→form_tag

“`.erb
<%= form_tag

元記事を表示

(rails sエラー)digest/md5.bundle

あけましておめでとうございます!
みなさまにとって最高の一年になることを願っています!

さて私は年明け早々エラーと遭遇しました
もうすぐphpを使った仕事を開始するので、laravelの環境構築をした際、久しぶりにrailsで作成したアプリをrails sでサーバーを立ち上げようとしたところ、エラーになったのでメモしておこうと思います!

OSはmacです

# エラー内容

“`
$ rails s
18: from bin/rails:3:in `


17: from bin/rails:3:in `load’
(省略)
/Users/ユーザーの名前/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require’: dlopen(/Users/ユーザーの名前/.rbenv/versions/2.5.1/lib/ruby/2.5.0/x86_64-darwin18/digest/md5.bundle, 9): Library not loaded: /

元記事を表示

今更ながらRails削除の仕方

#ローカル環境に置けるRailsの削除の仕方
今更!?
と思う方も多いと思いますが、意外と一つの記事にまとまってなかったので、ここに残させていただきます。

##経緯
僕のmacには**rails6系**が入っていました。
しかし、なかなかに参考記事もまだ少なく、js関連の時は特に苦労してました、
なので、**rails6は消そう**と思い検索しましたが、何記事かまたいでしまいました。

##ロールにインストールされているバージョン確認

“`
gem list | grep rails
“`
・意外にもrubyのバージョン検索記事はいっぱいあるが、
railsのバージョン検索記事は少なくここで手間取ってしまった。。。

“`
gem list | grep rails
~~~
~~~
fullcalendar-rails (3.9.0.0)
jquery-rails (4.3.5, 4.3.3)
jquery-ui-rails (6.0.1)
momentjs-rails (2.20.1)
rails (6.0.2.1, 6.0.1, 5.2.4, 5.2.1)
rails-d

元記事を表示

「Formtastic::UnknownInputError Unable to find input class Input」の対処法

最近の勉強で学んだ事を、ノート代わりにまとめていきます。
主に自分の学習の流れを振り返りで残す形なので色々、省いてます。
Webエンジニアの諸先輩方からアドバイスやご指摘を頂けたらありがたいです!

#Formtastic::UnknownInputError Unable to find input class Input

このエラーが起きた状況は、Active Adminで作成したユーザー管理画面において編集機能を追加するために
actionsに:editを追加した所、発生しました。

“`app/admin/users.rb
actions :index , :show , :edit
“`

こちらの解決方法は、Issueに書いてあり。
[Formtastic::UnknownInputError Unable to find input class Input · Issue #4178 · activeadmin/activeadmin · GitHub](https://github.com/activeadmin/activeadmin/issues/4178)

元記事を表示

An error occurred while installing mysql2 (0.5.2), and Bundler cannot continue. Make sure that `gem install mysql2 -v ‘0.5.2’ –source ‘https://rubygems.org/’` succeeds before bundling.と出てきたときの対処法②

最近の勉強で学んだ事を、ノート代わりにまとめていきます。
主に自分の学習の流れを振り返りで残す形なので色々、省いてます。
Webエンジニアの諸先輩方からアドバイスやご指摘を頂けたらありがたいです!

#bundle installを実行した際に起きた出来事
このエラーは、ごくたまに遭遇するのですが、mysql2がインストールしてる際に上手くインストールできない場合に発生するみたいです。

“`apache
An error occurred while installing mysql2 (0.5.3), and Bundler cannot continue.
Make sure that `gem install mysql2 -v ‘0.5.3’ –source ‘https://rubygems.org/’` succeeds before bundling.

In Gemfile:
mysql2
run bundle binstubs bundler
Could not find gem ‘puma (~> 3.11)’ in any of t

元記事を表示

Rails入門者のエラー対処

どんもー、明けましておめでとうございます٩( ‘ω’ )و
TECH::EXPERT渋谷校68期[@snskOgata](https://twitter.com/snskOgata)です。

今回は前回書けなかった、Rails入門者のエラー対処について書いていこうと思います。
初めに断っておきますが、環境設定等でのエラーは、吐きそうになるので今回は触れません!(笑)
 
 
さて、入門時の開発でのエラー対処についてまず言えるのが
**エラー文と仲良くなろう**
ということですね:bulb:
入門時の開発エラーは、エラー文を読めば解決できることが本当に多いように思います。

加えて、英語が苦手な方は
**エラーでよく出てくる単語の意味を押さえる**
ことが技術力を身に付ける第一歩だと思います。

 
今回の記事の大枠については右側のヘッダを見ていただけたらと思います。

では、さっそく試しに実際のエラーを見てみましょう
# 1. エラー画面について
![スクリーンショット 2020-01-01 21.33.46.png](https://qiita-image-store.s3.ap-n

元記事を表示

rails: Q&Aのアソシエーションについて

### やりたいこと
自分の回答した質問の一覧を見れるページを作りたい
なので、“user“→“answer“→“question“という感じでレコードを取得したい。

### 実際のやり方

__アソシエーション関係__

“`ruby
## id
## name

class User < ApplicationRecord has_many :questions has_many :answers end ``` ```ruby ## id ## user_id class Question < ApplicationRecord belongs_to :user has_many :answers, class_name: 'Answer', foreign_key: 'question_id' end ``` ```ruby ## id ## user_id ## question_id class Answer < ApplicationRecord belongs_to :user has_many :answers, cl

元記事を表示

rails generateコマンドで生成されるファイル一覧

`rails generate`コマンドで生成されるファイルの一覧を作成です。

|コマンド|コントローラ |ビュー|モデル|マイグレーションファイル|ルーティング|
|:-:|:-:|:-:|:-:|:-:|:-:|
|controller|○|○|✗|✗|○|
|model|✗|✗|○|○|✗|
|migration|✗|✗|✗|○|✗|
|scaffold|○|○|○|○|○|

元記事を表示

【26選】駆け出しRailsエンジニアが押さえておきたいgem大全

# はじめに

つい最近、Railsエンジニアとしてインターンを始めてからの業務経験が1年を超えました。業務未経験からweb系の自社開発企業に入ったとき、**「うわっ…、私の知らないgem多すぎ?」**と愕然としたことを覚えています。

そこから必死に業務に食らいつき、知らなかった数々のgemについて知見を深めてきました。今では、知らないgemでもドキュメントを読めばインストール・カスタマイズがだいたいできるようになりました。

ということで今回は、業務未経験からRailsエンジニアになった方が、現場に入ったときに**最低限これさえ押さえていけばOK**というgemを解説や参考記事つきで紹介したいと思います!

昔の自分がこの記事を読んだら、**「ありがてえ、ありがてえよ…」**と思うことうけあいです!

# gem一覧

## フロントエンド系

### [sass-rails](https://github.com/rails/sass-rails)
### [slim-rails](https://github.com/slim-template/slim-rails)

元記事を表示

AWSにRailsアプリケーションを実行する環境作りの手順メモ

# 概要

この記事は`rails new`で作成したアプリケーションをAWS上で実行するために必要な最低限の作業手順をまとめたメモになります。

**環境**

* AWS (Amazon Linux 2)
* Ruby 2.5.7
* Rails 6.0.2.1
* Nginx 1.16.1

**参考**

* [Getting Started with Rails] (https://guides.rubyonrails.org/getting_started.html)

# AWS編

VPCにパブリックサブネットを1つ作成し、そこにrailsアプリケーションを実行するEC2インスタンスを1つ作成します。

## VPCの作成

**ステップ1: VPC 設定の選択**
![vpc1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/66c598f9-7d9b-1354-44bf-fdb3914e7ecd.png)

**ステップ2: 1個のパブリックサブネットを持つVPC**
VP

元記事を表示

Railsチュートリアルメモ – 第2章・第3章

[目次はこちら](https://qiita.com/yokohama4580/items/dedfd5510080273dc2a0)

Railsチュートリアルの第2章をやってみて気づいたことのメモを記載していきます

## 2.1 アプリケーションの計画
新しくrails newでtoy_appを作成する。
rails newすると、git initも実行されるようで.gitディレクトリがtoy_app配下に作成される。

“`
tree
.
└── environment
├── hello_app
└── toy_app
└──.git
“`

## 2.2 Usersリソース
RailsのscaffoldコマンドでUsersリソースを手軽に作成する実演の章

“`
rails generate scaffold User name:string email:string
rails db:migrate
rails server
“`
rails generateコマンドの素晴らしいところは、一発でmodelもviewもcontroll

元記事を表示

予習、復習の繰り返しで定着させる!

Railsでメモアプリをつくる。
Railsでログイン機能付きのブログアプリをつくる。

最近学んだ事の繰り返ししてアプリケーション作りの大まかな流れを体に叩き込んでいます。
エラーの解釈、ターミナルの表記の解釈、コード・etc.. 見慣れてきました・・・やっと?

日進月歩で頑張ります。

元記事を表示

OTHERカテゴリの最新記事