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

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

文字列と数値②

#①.数値で計算

前回数値は文字列とは異なることを学びました!

数値は計算できることが特徴です!

ここからは、メソッドと同じくプログラムでよく使われる演算子について学びます!

#演算子

プログラミングにおける値の計算や比較などに使用する記号のことです!

計算における代表的な演算子は+や-、比較における代表的な演算子は>や<があります! この簡単な記号である演算子を用いることで、計算や比較処理を瞬時に行ってくれます! #代数演算子 演算子の中でも計算を行うものは、代数演算子と呼ばれます! Rubyで一般的な計算をする場合、以下の様な演算子が使えます! ```php 代数演算子 説明 + 足し算 - 引き算 * かけ算 / 割り算 % 剰余(割ったあまり) ``` 使い方は、普通の算数の計算と同じです! ただし、剰余の計算は馴染みがないので注意が必要です! 例えば、「17を5で割ったときの余り」を求めることが

元記事を表示

railsチュートリアル第12章 新しいパスワードの設定 createアクションでパスワード再設定

###新しいパスワードの設定
攻撃者からアカウントを盗まれないようにするため
マイグレーションに図 12.5の属性を追加します

“`
ubuntu:~/environment/sample_app (password-reset) $ rails generate migration add_reset_to_users reset_digest:string reset_sent_at:datetime
Running via Spring preloader in process 7187
invoke active_record
create db/migrate/20211019130931_add_reset_to_users.rb
“`

元記事を表示

railsチュートリアル第12章 パスワードの再設定

#パスワードの再設定
パスワードを忘れた時のパスワードの再設定に取り組めるようになりました。
メールレイアウト用と新しいパスワードの送信用のフォームが必要となります。

リソースとは、直訳すると「資源」と言う意味ですが、ウェブサイトにおいては、ウェブサイトを構成するもの一般(文書・画像・その他諸々のデータファイルなど)を指します。

アカウント有効化の際と似ていて、PasswordResetsリソースを作成して、再設定用のトークンとそれに対応するダイジェストを保存するのが今回の目的となります。

1.ユーザーがパスワードの再設定をリクエストすると、ユーザーが送信したメールアドレスをキーにしてデータベースからユーザーを見つける

2.該当のメールアドレスがデータベースにある場合は、再設定用トークンとそれに対応する再設定ダイジェストを生成する

3.再設定用ダイジェストはデータベースに保存しておき、再設定用トークンはメールアドレスと一緒に、ユーザーに送信する有効化用メールのリンクに仕込んでおく

4.ユーザーがメールのリンクをクリックしたら、メールアドレスをキーとしてユーザーを探し、データ

元記事を表示

railsチュートリアル第11章 有効化のテストとリファクタリング

###有効化のテストとリファクタリング
アカウント有効化の統合テストを追加します

####ユーザー登録のテストにアカウント有効化を追加する
test/integration/users_signup_test.rb

“`rb
require ‘test_helper’

class UsersSignupTest < ActionDispatch::IntegrationTest def setup ActionMailer::Base.deliveries.clear # setupメソッドでこれを初期化しておかないと、並行して行われる # 他のテストでメールが配信されたときにエラーが発生してしまいます end test "invalid signup information" do get signup_path # signupのページにアクセス assert_no_difference 'User.count' do # ユーザー数が変わらないかをテストする post users

元記事を表示

【RSpec】Railsチュートリアル第6版 第13章

#はじめに
Railsチュートリアル第6版のテストをRSpecで書き直していく。

###目次
– [第3章](https://qiita.com/supyolo888/items/35081ead2cfafb40a995)
– [第4章](https://qiita.com/supyolo888/items/939b670b62eb18467f6d)
– [第5章](https://qiita.com/supyolo888/items/42234ac2ed3919b14586)
– [第6章](https://qiita.com/supyolo888/items/bd10e64c77fe391cf203)
– [第7章](https://qiita.com/supyolo888/items/d2824ced26402b5f58d1)
– [第8章](https://qiita.com/supyolo888/items/508caaa40edf307093ed)
– [第9章](https://qiita.com/supyolo888/items/62e471b07a0c9a81575

元記事を表示

【Ruby on Rails】楽天APIで商品検索アプリを作る

##プロジェクトを開始

“`
rails new raktuensearch
“`

##データベースと接続

“`
cd rakutensearch
rails db:create
“`

サーバーを起動して動作確認

“`
rails s
“`
“Yay! You’re on Rails!” の表示を確認できたらOK

##共通レイアウト

###共通のView

“`ruby:app/views/layouts/application.html.erb



WishlistTest

<%= csrf_meta_tags %>
<%= csp_meta_tag %>

Railsで謎のDISTINCTクエリが発行される件

Railsのクエリログに発行した覚えの無いDISTINCTクエリがあったので、原因を調べてみた。

![distinct-query-log.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/305052/3e889906-c455-ae43-f397-55e9baf67724.png)

# 環境

| ソフトウェア | バージョン |
|:-|:-|
| Ruby | 2.7.4 |
| Ruby on Rails | 6.0.4.1 |
| MySQL | 5.7.35 |

# 再現例

ブログの記事を表すarticlesテーブルと、記事に対するコメントを表すcommentsテーブルを例として使う:

![articles_comments_er.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/305052/84c5a9de-cab2-577c-534f-4f1d49a7f60c.png)

1つの記事に対してコメント

元記事を表示

Bootstrapのnode_modulesファイル内のcssをoverride出来なかった話

表題の通り、Bootstrapでcssをoverrideしようとしたところ適用されず、沼にハマりかけたので記録を残します。

##実行環境
– Windows10 20H2
– Vagrant 2.2.18
– Ubuntu 20.04.3 LTS
– Ruby on Rails 6.0.4.1
– jQuery 3.5.1
– bootstrap 4.5.0

##問題
1. HTMLファイル内にalertテスト用のdivを作成

“`HTML

alertクラス

“`

2. オーバーライド用のscssファイルを作成。
[app/javascript/stylesheets/bootstrap_overrides.scss]

“`css
.alert-success {
background-color: pink;
}
“`

3. scssファイルを読み込んでるマニフェストファイルにscssファイルのパスを通す。
[app/javascript/packs/application.js

元記事を表示

佐々木さんが勤怠管理をお手伝いするってよ

勤怠管理システムを作りました。
名は**SASAKIsan**。敵の名は**miyamoto**。
昔いたベンチャー企業でみやもとさんという勤怠管理botを使っていました。Slackから出勤と退勤の時間を打刻できるので非常にありがたく利用しておりました。

https://github.com/masuidrive/miyamoto

そんなみやもとさんですが、SlackとGAS連携が前提なのと時たまバグが発生するのが曲者でした。何奴。
8月にバグが出る件は直っているようですね。

そこで、導入の敷居がもっと下がればと思い開発したのがSASAKIsanです。

https://github.com/uichi/SASAKIsan

サンプルをHerokuサーバーで立ち上げているので、遊んでいただいて構いません。

[SASAKIsan on Heroku](https://sasakisan.herokuapp.com/)
*※アカウント登録はできないのでご注意を*

**Adminユーザー**
email : kojiro_sasaki@ykonishi.tokyo
pass :

元記事を表示

rails new するのにmysql2くんが素直に入ってくれない

ぼくについて:プログラムに触って十ン年経つもののコーディングを真面目に始めてからは数ヶ月のド初心者です。

今回はrails newして新しいこと試すぞー、と思った矢先に心を折られたので初投稿です。
動作環境はこちら。
OS:windows 10 home
ruby:3.0.2←たぶんすべての元凶。
rails:6.1.4
mysql:8.0.22

#概要
`rails new myapp –database=mysql`しただけなのに、エラーが出る。謎い。えー?なんで?
初心者なので、こんな簡単そうなこともわかりません。
ていうかこないだ(※数ヶ月前)に書いたappでは動いてたじゃん。その時は2.6.6だったから、絶対これバージョンアップしたのが悪いんだけど、windows単体じゃバージョン管理は出来ないって調べたら出てくるし……

###やったこと
・とりあえずrubyとMSYSをアンインストールして再インストールした。変わらず。
・調べたら「opensslが古い可能性があるよ」というのが出てきたので、`gem update`をかける。ちょっと表記が進む……!?でもエラー。うー

元記事を表示

【Rails】Formオプションdisabledとreadonlyの違い

##環境
Ruby 3.0.2
Rails 6.1.4.1

##disabledとreadonlyの違い

“`disabled: true“`でフォームを送信すると**paramsに値は入らない**
“`readonly: true“`でフォームを送信すると**paramsに値が入る**

“`html.slim
= f.label :name, ‘名前’
= f.text_field :name, disabled: true
“`

https://bonoponz.hatenablog.com/entry/2020/11/12/%E3%80%90HTML%E3%80%91%3Cinput%3E%E3%82%BF%E3%82%B0%E3%81%AEreadonly%E5%B1%9E%E6%80%A7%E3%81%A8disabled%E5%B1%9E%E6%80%A7%E3%81%AE%E9%81%95%E3%81%84

元記事を表示

[Rails6] 5秒ごとにブラウザリロードをさせる + α

# 手順

1. 自動更新用のJavascriptを用意する
1. 自動更新したいviewで読み込む

これだけの記事です。

## やりかた: 自動更新用のJavascriptを用意する

以下のJavascriptを用意しておきます。

“`js:app/javascript/packs/autoreload.js
const interval = setInterval(‘location.reload()’, 5000)
$(document).on(‘turbolinks:before-cache turbolinks:before-render’, () => clearTimeout(interval))
“`

## やりかた: 自動更新したいviewで読み込む

“`erb:app/views/**/*.erb.html
<%= javascript_pack_tag 'autoreload' %>
“`

以上です。
とはいえ、「流石にreloadとか無いやろ…」という方には、以下の応用編も御覧ください。

# 応用編手順

1. contr

元記事を表示

文字列と数値①

#①.ターミナルを用いたプログラムの記述と実行

#irb

irbコマンドは、ターミナルから直接Rubyのプログラムを動かすことができる機能を起動します!

ちなみに、irbは「Interactive Ruby」の略です!

簡易的にRubyを実行する手順で学びます!

irbコマンドという機能を使って、ファイル無しでプログラムを実行します!

“`php:【例】ターミナル
# irbを起動
% irb
“`

irbではエンターキーを打つたびに、そこまでの記述を実行して結果を表示する!ということが分かります!

![aad21d0259fdbbe89d213db8262934c5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2015058/431a00ba-7dab-f5be-38de-9e4a410f64b3.png)

irbを終了するときは、exitと記述して実行します!

“`php:【例】irbの終了
# irbを終了
irb(main):001:0> exit

# 問題なく終了

元記事を表示

これまで無かった「映画の予告がメインのサービス」を未経験エンジニアが作ってみた【個人開発】

![ogp_default.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641012/cf70d8dd-88fe-46fd-592d-131ccc517a18.png)

# はじめに

はじめまして! @taiju365と申します。
私は映画が大好きで、1ヶ月で176作品観たこともあります。

そんな私は、見たい映画を探すときに必ず予告動画を見るのですが、**「検索するのが面倒」**といつも感じていました。

YouTubeで映画会社のチャンネルを登録しても、投稿されるのは新しい作品ばかりで家では観られない。
もっとカンタンに探せないかとTikTokを使っても、予告動画は全然ない。

そこで、

自分がまだ観ていない
評価が高い作品の
予告動画がたくさん並んでいる

そんなサービスがあ

元記事を表示

GCP 自然言語処理API(natural language processing)をつかって感情分析してみた(Docker Rails heroku GCP)

#前書き
RailsアプリでGCPのAPIを叩きたかったけれど、全然情報が出てこなかったのでまとめておく

#実現したこと
###Docker + Rails + GCP + heroku
自作したWEBアプリの口コミ(コメント)を投稿したときに
![スクリーンショット 2021-11-09 15.14.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427079/46d2f091-44a7-bd16-38f0-578b05009ed7.png)

bodyの内容に対してGCPで用意されている自然言語処理の感情分析のAPIを叩き
`score`と`magnitude`を取得しDBに保存
![スクリーンショット 2021-11-09 15.16.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427079/05234abe-1b94-f99e-6fd4-84bfca409284.png)

#開発環境
“`

元記事を表示

【RSpecエラー】’0′ is not a valid role

##環境
Ruby 3.0.2
Rails 6.1.4.1

##状況

“`
enum genre: { mistery: 0, romance: 1 }
“`

“`factory.rb
FactoryBot.define do
factory :post do
user

title { ‘first’ }
genre { 0 }
end
end
“`

“`rspec.rb
context ‘記事を追加する際、正しい値の場合’ do
let!(:post) { create(:post) }
let!(:post_params) { attributes_for(:post, title: ‘other’) }
it ‘記事を追加できること’ do
expect {
post “/manage/posts/#{post.id}”, params: { post: post_params }
}.to change(Post, :count)
expect(response).to

元記事を表示

【Rails】nil、空文字、0を1つのコードで判定したい

##これまで
numberが“`nil“`か“`”(空)“`か“`0“`を判定したいとき

“`
number.blank? || number.zero?
“`

##これから

“`nil“` “`”(空)“` “`0“`を1つのコードで判定できる。
“`nil“` “`”(空)“`はto_iすると0になる。

“`
number.to_i.zero?
“`

“`
[1] pry(main)> number = ‘ ‘
=> ” ”
[2] pry(main)> number.to_i.zero?
=> true
[3] pry(main)> number = ”
=> “”
[4] pry(main)> number.to_i.zero?
=> true
[5] pry(main)> number = nil
=> nil
[6] pry(main)> number.to_i.zero?
=> true
“`

元記事を表示

ActsAsTaggableOnとTagifyを用いたタグ機能のサンプルコード(バリデーション、サジェスト機能、URLにタグ名、テストコード)

## 概要
RailsでActsAsTaggableOnとTagifyを用いたタグ機能のサンプルコードです。
記事にタグを登録する機能とタグを入力時のサジェスト機能があるシンプルなアプリになっています。
バックエンドの処理を簡単に実装するためにActsAsTaggableOnを、見た目を整えるためにTagifyとBulmaを使用しています。

タグの詳細ページではURLのパラメーターにタグの名前を使用しています。
記事に登録できるタグの数とタグの名前の長さや使える文字のバリデーションやRSpecでバリデーションのモデルスペックやサジェスト機能のリクエストスペック、タグ登録のシステムスペックも書いてあります。
バリデーションはForemを参考にしました。

https://github.com/forem/forem

## GitHubリポジトリ
https://github.com/kwtuku/tag-sandbox

## デプロイ済みのアプリ
https://tags-sandbox-29112.herokuapp.com/

## バージョン
Ruby 2.7.4
Rails

元記事を表示

db:create で ActiveRecord::NoDatabaseError factory_bot_rails の原因が factory_bot で モデル.new しているから?

# はじめに
製作中のアプリケーションにて、一度データベースを消して、再度作り成そうとしたところ、 `NoDatabaseError` が発生しました。
`rails db:create` を実行しているのに、 `NoDatabaseError`? と思いましたが、エラーの内容を見る限り`factory_bot`に関係があることだけはわかります。

“`zsh:console
username@pc article_app % rails db:drop
Dropped database ‘article_app_development’
Dropped database ‘article_app_test’

username@pc article_app % rails db:create
rails aborted!
ActiveRecord::NoDatabaseError: Unknown database ‘article_app_development’
/Users/username/projects/article_app/spec/factories/artic

元記事を表示

Webアプリケーションに正規表現を応用

#①.Ruby on Railsにおけるバリデーションへの応用

どのような正規表現で、バリデーションが設定されているのか理解しておきましょう!

よく使われる以下の3つを紹介します!

・郵便番号

・全角かな/カナ漢字の区別

・passwordの英数混合の判断

#②.郵便番号について考える!

郵便番号は、3桁の数字とハイフンと4桁の数字で構成されています!

ユーザーが正しくハイフンが記入された正しい形式で郵便番号を入力しているか判別する方法を学びます!

この郵便番号を正規表現らしく言い換えると、先頭に少なくとも3回の数字、そしてハイフン、末尾に少なくとも4回の数字 となります!

“`php:例
irb(main):001:0> postal_code = “150-0044”

irb(main):002:0> postal_code.match(/\A\d{3}[-]\d{4}\z/)
=> #
“`

新しい表現方法が出てきたので、以下の2つについて解説します!

\A

\z

#\A

\Aの直後に置いた文字を、文

元記事を表示

OTHERカテゴリの最新記事