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

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

rails tutorial 第10章

#はじめに

独学で[rails tutorial](https://railstutorial.jp/)を進めていく過程を投稿していきます。

進めていく上でわからなかった単語、詰まったエラーなどに触れています。

個人の学習のアウトプットなので間違いなどあればご指摘ください。

初めての投稿なので読みにくいところも多々あるかと思いますがご容赦ください。

#第10章 ユーザーの更新・表示・削除
##10.1.1 編集フォーム
演習2

“`ruby:app/views/users/_form.html.erb
#リスト 10.5: newとeditフォーム用のパーシャル
<%= form_with(model: @user, local: true) do |f| %>
<%= render 'shared/error_messages', object: @user %>

<%= f.label :name %>
<%= f.text_field :name, class: 'form-control' %>

<%= f.label :email %>

元記事を表示

Rails 6で認証認可入り掲示板APIを構築する #7 update, destroy実装

←[Rails 6で認証認可入り掲示板APIを構築する #6 show, create実装](https://qiita.com/rf_p/items/11c1d310f3b67c7f4881)

# updateテストの実装

残り2アクションupdateとdestroyを実装します。

updateは更新処理です。
createができていたら似たようなものなので、大きく詰まることはないはずです。

“`diff:spec/requests/v1/posts_controller.rb

+ describe “PUT /v1/posts#update” do
+ let(:update_param) do
+ post = create(:post)
+ update_param = attributes_for(:post, subject: “update_subjectテスト”, body: “update_bodyテスト”)
+ update_param[:id] = post.id
+ update_param
+

元記事を表示

rails Action Textの実装

#はじめに
自分用メモとして残します。

#環境
* Rails v6.0.3.2
* ruby v2.6.6p146
* node v12.18.3
* yarn v1.22.4

#手順
###1.アプリ作成
MySQLを使ったアプリを作成する。

“`
$ rails new actionText -d mysql
“`

作成したアプリに移動

###2.scaffold
scaffoldでアプリの雛形を作成する。
※articleはtitleとcontentを持つが、後で追加するためここではtitleのみでOK

“`
$ rails g scaffold article title:string
“`

###3.DB作成

“`
$ rails db:create
“`

###4.migrate
“`
$ rails db:migrate
“`
#5.Action Textインストール

“`
$ rails action_text:install
“`

#6.migrate
“`
$ rails db:migrate
“`

#7.アソシエー

元記事を表示

rails tutorial 第9章

#はじめに

独学で[rails tutorial](https://railstutorial.jp/)を進めていく過程を投稿していきます。

進めていく上でわからなかった単語、詰まったエラーなどに触れています。

個人の学習のアウトプットなので間違いなどあればご指摘ください。

初めての投稿なので読みにくいところも多々あるかと思いますがご容赦ください。

#第9章 発展的なログイン機構
##9.1.1 記憶トークンと暗号化
attr_accessorの復習

参考
https://qiita.com/Hassan/items/0e034a1d42b2335936e6
.remember_tokenが使えるようになります(remember_token属性が扱えるようになった)

“`
def remember
self.remember_token = User.new_token
update_attribute(:remember_digest, User.digest(remember_token))
end
“`
最後の(remember_token)はself.

元記事を表示

rails チュートリアル

4章まで終了
次回5章から

元記事を表示

ユーザー管理機能をウィザード形式で実装する

#概要
今回は、ユーザー管理機能をウィザード形式で実装することに関してです。
ウィザード形式とは、画面遷移しながらユーザー登録を行っていく形式です。

今回、userモデルの登録要件は
nickname, grade, email, password

続いて画面遷移してuser_infoモデルに
subject, school, profile

を登録します。

ちなみに、user_infoは得意教科、在籍校、プロフィールとなっています。

#実装

まずはdeviseをインストールして、userモデルを作成します。

emailとpasswordはデフォルトで入っているので、nicknameとgradeを追加します。

カラムを追加したので、次のようにコントローラーを編集します。

“`controllers.application_controller.rb
class ApplicationController < ActionController::Base before_action :configure_permitted_parameters, if: :dev

元記事を表示

《コロナに負けず!!》29歳で営業職からジョブチェンジ。未経験で受託開発企業から内定を頂けました。

## はじめに
昨年「エンジニアになるぞ!」と決意をし、
今年の3月に前職を退職(最終出社)、
3月下旬からプログラミングスクールに通いました。

現在、29歳(今年で30歳!)です。
新卒からずっと営業職で、プログラミングは未経験。

そんな自分でも、webエンジニアのスタートラインに
立つ事が出来ました。

自分なりに戦略を立てて行った就活でもありましたので、
就職活動中の方の参考にして頂ければ幸いです。

## 目次
・工夫して就活を行おうとした背景
・就活の結果
・学習開始〜内定までの流れ
・今回の転職活動でのポイント
・ポートフォリオについてのポイント
・学習方法について(おまけ)
・最後に

## 工夫して就活を行おうとした背景
(興味ない方は読み飛ばして下さい!笑)

スクールに入った時点の私は転職に関しての認識が甘く、

「高い金額のスクールで基礎をしっかり学べば、転職はできるはず!」
「スクールからも紹介があるし!」
などと、このくらいの認識でした。

ですが、この認識は間違いです!!!

少なくとも、20代前半の若い方でない限りは
エージェントからの紹介案件はごく

元記事を表示

[Rails]Formオブジェクト使用時にエラーメッセージが日本語化されない[locale]

#概要
オリジナルアプリ制作時、formオブジェクトを利用した箇所のエラーメッセージだけ日本語化されなかったのでその備忘録を。

https://qiita.com/rytr823/items/e9fbbb16884b6f52d463
調べていたら上記の方とほとんど同じでした。感謝。

#前提
ja.ymlファイルの作成までは終わっている

#環境
ruby 2.6.5
rails 6.0.0
gem ‘rails-i18n’導入済み

#formオブジェクトの配置場所

`app/forms/guest_data.rb`

#EZ図
この図のguestsテーブルとbathsテーブルとdrinksテーブルの3つをformオブジェクトを使用して保存しようとしていた。

![兵声援EZ図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/661072/6a52b887-40cc-af00-8c3c-4a7dead29ca3.png)

#内容
ja.ymlに記述しても日本語化が適用されない

#間違ってた記述

元記事を表示

Railsコンソールを使用してレコードを追加する

#動機
Railsでアプリケーション開発を行っている際DBへレコードの追加をどう行うか忘れてしまうため記録

##前提:コンソールの立ち上げ

“`
$ rails c
“`

##レコードの追加
レコードの追加は createメソッドを使用

“`
[1] pry(main)> モデル名.create(カラム名: ‘追加したいvalue’)
“`

例)

“`
[1] pry(main)> Todo.create(title: ‘Rails’,content: ‘Rails Practice’ )
“`

##他にも
・create!
  何かが足りない時にエラーを返してくれる、絶対に不足しては困るものがある場合使用

・save
  インスタンスを作成しsaveを使用することでcreateと同じ
  こちらもsave!がある

“`
インスタンス名 = モデル名.new({ カラム名: ‘文言’, カラム名: ‘文言’ })
インスタンス名.save
“`

・update
  データの更新を行いたい時に使用
  update!もある

“`
モデル名.up

元記事を表示

errors.full_messagesの配列を文字に変えて出力する

## 起こった問題とやりたいこと
errors.full_messagesが配列なので、flashメッセージが、[“hoge hoge”]が出力される
→ 文字に変えて、hogehogeと出力したい

## やったこと
errors.full_messagesにto_sentenceメソッドをつけるだけ

“`user_contorller.rb
class Users::UserController < Users::ApplicationController #中略 def update @user = user.Users flash[:alert] = @user.errors.full_messages.to_sentence end #中略 end ``` 今日もお疲れ様でした。

元記事を表示

Railsで「一度クリックしたら二度と表示させない」を実装

今回は、ページ更新の度にDBにあるテーブルからランダムでレコードをひとつ取り出して表示。
その表示をクリックしたら、以降はクリックしたユーザー(ログインユーザー)のみ、ランダム選択のプールからクリック済みの項目が排除されるという仕様を実装します。

### 準備

ランダムプールのテーブルをlistsとします。
usersとlistsを結びつける、user_listsテーブルを作成しておきます。(カラムはuser_idとlist_idです)

deviseの導入が前提です。

### 実装方針

①クリックする度に、user_listsテーブルにユーザーとクリックしたlistsが保存されるようにします。
②user_listsテーブルから、ユーザーがクリックしたlistsをwhereで抽出します。
③抽出した配列を条件にwhere.notで排除していきます。

では、やってみます。

“`ruby
#ログイン中ユーザーのidでレコードを検索し、取得したレコード群のlist_idを配列化
list_ids = UserLists.where(user_id: curren

元記事を表示

【Rails】「&.」あ!それみたことある!!(意味は知らない)

# 「&.」とは(概要)

**ぼっち演算子**と呼ばれます。

`Ruby`では通常、レシーバーに対してメソッドが実行された時、**レシーバー(オブジェクト)が`nil`だった場合にエラーを返します。**

しかしプログラムによっては、エラーを返したくない時があります。そんな時に使うのが「&.」(ぼっち演算子)です。

ぼっち演算子はオブジェクトが`nil`だった場合にエラーではなく、`nil`を返してくれます。

# 「&.」は何が嬉しい??

返り値が「〇〇かnil」を返すみたいなメソッドが`Ruby`にはあります。それを受け取ったレシーバーに、レシーバーに「`nil`が想定されていないメソッド」を使ってしまうと、エラーが出力されてしまいます。

そんな時に**「&.」**を使うことで、そのメソッドはエラーではなく、`nil`を返してくれるようになります。

# 「&.」の懸念点

ぼっち演算子を使ったからと言って、確実に`nil`を返してくれるというわけではありません。そのメソッド名が存在しない(スペルミス等)場合には`NoMethodError`が出力されてしまいます。

元記事を表示

ECサイトの店舗名を表示させたい ミスの箇所はコンソールで確認出来る

ふるさと納税のようなサイトをイメージして、サイトのTopページに商品とその商品を出品している店名表示をさせようとした所、NoMethodErrorが出てしまいました。
備忘録兼ねて、こういう所を見ると良いのかと勉強になりましたので記載致します。

![スクリーンショット 2020-09-10 21.12.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660239/88b2631b-19aa-a4fd-f890-b355367cb16c.png)

現状は
・itemとclientは既にモデル上でアソシエーションは構築済み。
(itemが子でclientが親)
・clientにはshop_nameのカラム持たせている。
・Adminコントローラーには@items = Items.allでを指定済み

原因が思い当たらず、ターミナルにてコンソール($rails c)で確認。![スクリーンショット 2020-09-10 22.27.58.png](https://qiita-image-store.s3

元記事を表示

【Rails】DBをリセットしてmigrateをやり直す方法

# はじめに
Railsで作成したアプリで、一番はじめに作ったモデルのテーブルが間違っていたことに気づいたため、DBをリセットしてmigrateをやり直しました。
以下の記事を参考にやり直すことができました。
参考 [Rails:migrateでDBをリセットして最初からつくり直す方法。](https://qiita.com/Atsushi_/items/a230fb7f624d1eebf2f3)
参考 [【Rails】$rails db:rollbackしたい時の間違えない手順](https://qiita.com/s_tatsuki/items/3e1f119c91e21b8f0c33)

#### 何が間違っていたのか
deviseでユーザー登録をさせる時に、生年月日のカラム型をstring型にしてしまっていた。このままでも登録は出来たが、生年月日の欄を入力した状態で他の部分のバリデーションに引っ掛かり、エラー文を表示させる画面に移った時に以下の表記。

“`unix:ターミナルに表示されたエラー
ActionView::Template::Error (undefined m

元記事を表示

既存の.erbファイルをhamlに変換する方法

#手順

gemファイルに以下を記載

“`
gem ‘hamlit’

group :development do
gem ‘erb2haml’
end
“`

‘erb2haml’ はhamlに変換する際に利用するため記載を忘れないこと

“`
$ bundle install
“`

イントール完了後

“`
$ bundle exec rake haml:replace_erbs
“`

これで変換が完了します。

元記事を表示

railsにVue.jsを導入しようとしたらエラーがでた物語

##環境
・Ruby 2.6.6
・Rails 6.0.3.2
・Docker/docker-compose

##やったこと
https://qiita.com/Moo_Moo_Farm/items/afacfe4349af6a106253
参考URLを見ながらVue.jsを導入しようとすると、以下のエラーが発生。

“`ruby
% docker-compose run web rails new . –force –no-deps –database=mysql –skip-test –webpack=vue

create README.md
create Rakefile
create .ruby-version

#~~~~~~~~~なんやらなんやら。。。~~~~~~~~~~~~~~~

Webpacker successfully installed ? ?
rails webpacker:install:vue
error Couldn’t find an integrity file

元記事を表示

【form_with】でhtmlタグのcheck_boxにclassやIDを付与する

#記述方法
{}のなかにまとめて記述すれば良い。

“`ruby:具体的な記述
<%= f.check_box :diabetes ,{checked: true, class: "form-check-input", id: "diabetes" }, "true", "false" %>
“`

“`ruby:間違った例
<%= f.check_box :diabetes ,{ }, "true", "false", class: "form-check-input", id: "diabetes" %>
“`
{}の中にはcheckd: :trueしか入れてはいけないと思っていたため、ハマってしまった。
備忘録として書き残しておく。

元記事を表示

Mysql2::Error::ConnectionError: Access denied for user ‘root’@’localhost’ (using password: YES)

# やろうとしていること
ローカル環境で作ったポートフォリオ(個人アプリ)をAWSにデプロイしようとしているところです。
本番環境でデータベースを作ろうとしたのですが、エラーが出てしまいました。

# エラー文
“`
[user@ip-00-0-0-000 pfc-master]$ rake db:create RAILS_ENV=production
Access denied for user ‘root’@’localhost’ (using password: NO)
Couldn’t create ‘pfc-master_production’ database. Please check your configuration.
rake aborted!
Mysql2::Error::ConnectionError: Access denied for user ‘root’@’localhost’ (using password: NO)

Tasks: TOP => db:create
(See full trace by running task with –tr

元記事を表示

Rails 6で認証認可入り掲示板APIを構築する #6 show, create実装

←[Rails 6で認証認可入り掲示板APIを構築する #5 controller, routes実装](https://qiita.com/rf_p/items/2b40f08e0509fb8ff56b)

# showテストの実装

前回のindexに続き、showのテストとcontrollerを実装していきます。
showは、パラメータのidを元にfindして返すという挙動です。

テストは正常にレスポンスが返ってくることと、存在しないIDの時に404が返ってくることあたりでしょうか。

“`diff:spec/requests/v1/posts_controller.rb

+ describe “GET /v1/posts#show” do
+ let(:post) do
+ create(:post, subject: “showテスト”)
+ end
+ it “正常レスポンスコードが返ってくる” do
+ get v1_post_url({ id: post.id })
+ expect(response.st

元記事を表示

HerokuでDocker環境Rails MySQLなものを動かす。deviseかつtwitter APIを隠しながら

人に見せる用に書いていません。

自作記事のお父上、Rails+MySQL+Nginx+Unicorn+Docker+CircieCIな開発環境を作りたいえ〜の記事の続き。

上で作った環境に[[*Rails*] deviseの使い方(rails5版)](https://qiita.com/cigalecigales/items/f4274088f20832252374)を追加し、かつTwitterAPIを`gem ‘dotenv-rails’`で隠しながら、本番環境のherokuにアップロードした。

### ①docker-compose.ymlのコマンドを変更する

“`docker-compose.yml
command: /bin/sh -c “rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b ‘0.0.0.0’”
“`

### ② gem ‘dotenv-rails’を導入する

目的:TwitterAPIキーをGitHubのローカルに入れたくない

envファイルはGitの管理に入れたくな

元記事を表示

OTHERカテゴリの最新記事