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

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

Couldn’t find the element to insert the template. Make sure your `data-association-insertion-*` on `link_to_add_association` is correct.

railsでcocoonを使って複数のフィールド追加を試みていたところタイトルのエラーが発生

“`
.nested-items
“`

を追加しておらず、どこにフォームを入れて良いかjs側が理解していないことが問題でした

### 参考記事
なし

元記事を表示

閏年を含めた月ごとの日数を求めるプログラム

【概要】
—————————————-
1.結論

2.どのようにプログラミングするのか

3.開発環境

1.結論
—————————————-
2月だけ4,100,400の剰余(%)で条件式に当てはめたメソッドを作り、年月の入力と年月日を出力する!

2.どのようにプログラミングするのか
—————————————-

“`ruby
def get_days_leap_year(year, month)
each_month_days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] #—❶
if month == 2
if year % 4 == 0
if year % 100 == 0 && year % 400 != 0 #—❷
days = 28

元記事を表示

【初学者向け】Rails mergeメソッド

## 記事の目的
初学者の為、間違っているところはご指摘頂けると幸いです。
備忘録・アウトプット目的で投稿です。

##mergeメソッドとは?
ストロングパラメータの設定の最後にでてくる`merge`。

“`ruby
def review_params
params.require(:review).permit(
:memo,
:image)
.merge(user_id:current_user.id) # ←これです
end
“`

##mergeメソッドについて(チェリー本より引用)
これはなんだ?とRailsの参考書等(Railsチュートリアル、現場Rails)等でメソッドの記載部分を探すもない。
チェリー本をみてみると、メソッドについて説明がなされている。

“`ruby
h = { us: ‘dollar’, india: ‘rupee’ }

{ japan: ‘yen’ }.merge(h) #=> {:japan=>”yen”, :us=>”dollar”, :india=>”rupee”}
“`

`merge

元記事を表示

テスティングフレームワークは何を使うと良いか【Rails】

# はじめに

テストやら、細かいセキュリティ的な部分の実装はまだ課題として残したまま、とりあえず先日AWSでアプリケーションを公開しました。

というわけで無事公開したのだが、やはりテストを実装しないといけないので、テストについて調べてみました。

調べた結果RSpecをまず学習したほうが効率が良いという結論に至りました。

調べた内容は下記に列挙します。

– テストとは何か
– Railsで実装されるテスティングフレームワークとは何か
– ネット上で見つけたテスティングフレームワーク3種類の簡単な概要
– 多く使われているテスティングフレームワークとは何か

# テストとは

アプリケーションを本番環境のサーバーで動作させるためには、そのアプリケーションのコードが仕様通りに欠陥(バグ)なく動作している必要があります。

テストとは、そのアプリケーションのコードが仕様通りに動作していることを確認し、バグを見つけ出ことです。

バグを見つけ出すことで、そのバグを修正(デバッグ)します。

> 参考:[https://ja.wikipedia.org/wiki/ソフトウェアテスト]

元記事を表示

Rails 並び替え機能の実装(likeの数順に表示)

#前提条件
・railsを用いたアプリケーション
・Recipeモデルはhas_many で Likeモデルと紐づいている。

“`recipe.rb
has_many :passive_likes, class_name: “Like”,
foreign_key: “liked_id”,
dependent: :destroy
“`

“`like.rb
class Like < ApplicationRecord belongs_to :liker, class_name: "User" belongs_to :liked, class_name: "Recipe" validates :liker_id, presence: true validates :liked_id, presence: true end ``` #したいこと ・Recipeモデルに紐づくLikeモデルのliked_idの数(count)に順じて降順で表示  される様に並び替えしたい。 #1. Recipeの

元記事を表示

class継承とその身近な例について

#class継承とその身近な例について#

おはようございます。Qiita初投稿です。

本日は、rubyのclass継承と、その身近な例についてお話しできたらと思います!
ちょうど最近、なるほどなあと思ったので、共有したいと思います。
もしかしたら、あたりまえすぎるかもしれません。

ただ、もし読んでいただいた方にとって、何かプラスになれば幸いです!

###1、クラス継承とは###
クラス継承とは、あるクラスを元に他のクラスを作成することです。
元になったクラスを親クラス、新しいクラスを子クラスといいます。
親から子に引き継ぐことで、引継ぎ前のクラスも使えつつ、新しいクラスを作成できます。
なんて感動的な親子関係。

###2、書き方###

小クラスの横に<をつかって親クラスを書くだけ ```example.rb class Child < Parent #ParentクラスをChildクラスに継承 ``` クラスのなので、頭文字は大文字です。 こうすることで、親クラスを使えます。 ###3、親クラスの何が使えるの?### 主に二つです。 ・親クラスのインスタンス変数 ・

元記事を表示

【ruby】each文の中にeach文を入れると??

#1、最初に#

現在、プログラミング学習を初めて2ヶ月の者です。
今回は、rubyにてeach文の中にeach文を入れるとどうなるのか、ということについて記載しようと思います。

具体的には、以下の通りです。
①each文の中にeach文を入れると、どんな動きをしているのか
②動きを確認した方法

なお、each文の中にeach文とは、以下を想定しています。

“`ruby:sample1.rb
#簡略に記載してます。
array.each do |i|
array.each do |num|
end
end
“`

私と同じ学習をはじめたばかりの方にとって、何かプラスになれば幸いです!
※初心者投稿の記事になります。もっとこうした方がいいよ!といったことがあれば教えていただきたいです!

#2、どんな動きをしているのか#

今回はわかりやすくするために、先のコードに少し記述を加えた
以下のコードを使用します。

“`ruby:sample2.rb
array = [1,2,3]

array.each do |i|
puts i
array.each do

元記事を表示

【rails】 each_with_index、each.with_indexの違いと使い方

本記事では初心者の私がrailsで新たに学習した
「each_with_index、each.with_index」
の意味と使い方についてアウトプットして参ります。

この記事を読むと、これらの2つのメソッドの違い、使い方を理解できます。

#each_with_index、each.with_indexの違いと使い方

この2つのメソッドはどちらも
配列の要素を順番に取り出しているメソッドです。

“`
food = [noodle, pasta, bread]
#配列foodを用意
food.each_with_index do |item, i|
put “#{i}番目に食べたのは#{food}です”

#結果
0番目に食べたのはnoodleです
1番目に食べたのはpastaです
2番目に食べたのはbreadです
“`

のようになります。

ただ、each_with_indexは0から始まるため1から始めるのには

“`
put “#{i+1}番目に食べたのは#{food}です”
“`

としなければなりません。

一方each.with_indexメソッドを使うと、

元記事を表示

LIKE句を使って検索機能を実装する

データベースに保存されたデータを検索し、HTML上に表示する場合、基本的に「LIKE句」というものを使って実装していく。

#LIKE句の使い方
“`
モデルクラス名.where(‘検索するカラム名 LIKE(?)’, “検索するキーワード”)
“`

ただ、これでは完璧に一致するものしか検索結果に表示することができない。
(例えばgoogleで「野球」検索した時、完全に一致しないものも(野球場、プロ野球など)検索結果に出てくる。

そのような設定にしたい場合は、
検索するキーワードの前後に%を入れてLIKE句を指定すると、文字列の中に含まれたキーワードがヒットする。

“`
Product.where(‘title LIKE(?)’, “%#{params[:keyword]}%”)
“`

↑の場合、タイトルの中にキーワードが含まれるデータを検索できる。

また、このほかにもデータ検索する方法がある

“`
where(‘title LIKE(?)’, “a%”)
#↑aから始まるタイトルを検索
“`

“`
where(‘title LIKE(?)’, “%b”)

元記事を表示

【rails】スクレイピングの実装方法

スクレイピングの実装の方法を学習しましたので、学習のアウトプットとして書かせていただきます。

この記事を読むと、スクレイピングとは何か?
その実装方法はどうすればいいのか?を理解できます。

スクレイピングとは?
ウェブサイトから情報を習得し、加工して新たな情報を生成すること。
例えば、様々な飲食店のサイトを巡回し、価格表を作成するなど。

より詳しい内容を知りたい!と思われた方は、Googleで検索してみてください。

では早速スクレイピングの実装方法を書いていきます。

#スクレイピングの実装方法
1 gemfile 「mechanize」をインストールする

“`
gem ‘mechanize’
“`

その後にターミナルでbundle installを打ち込む

2 Mechanizeクラスのインスタンスを生成

“`
agent = Mechanize.new # Mechanizeクラスのインスタンスを生成し、変数agentに代入
“`

3 ウェブサイトのHTML情報を取得
Mechanizeクラスのインスタンスメソッド「get」を利用し、スクレ

元記事を表示

【rails】 rails newの使用方法

rails newを使用する際に、何度も検索をかけてしまっているため、こちらに一連の流れを掲載いたします。

その① railsのアプリを作成

“`
rails _5.2.1_ new pictweet -d mysql
“`
のように
rails railsのバージョン new アプリケーション名 -d 使用するデータベース

の順で記載する

その② コントローラーを作成
アプリ内で必要なコントローラーを作成する

“`
rails g tweets controller
“`

その③ データベースを作成する

“`
rails db:create
“`

その④ モデルを作成する

“`
rails g model tweet
“`

元記事を表示

【rails】ストロングパラメータの仕組みを理解しよう

#ストロングパラメータとは?
フォームから入力された情報を指定して、安全に受け取るための仕組み。これによって不正な情報を受け取らないことができる。

“`:コントローラー
def tweet_params
params.permit(:title, :text)
end
“`

ここで使っているpermitはparamsで取得したキーのうち、データベースに保存していいものを許可するメソッドです。

元記事を表示

rails console よく使う操作

#はじめに
railsの学習を始めてrails consoleを使うことが多くなったため、ここにまとめます。

#操作

##起動

“`
rails c
“`

##終了

“`
quit
“`

##全てのデータを取得
例としてモデル名は`User`にします。

“`
User.all
“`

##idで検索する

“`
users = User.all
users.find(1)
“`
##idと指定して検索する

“`
users = User.all
users.find_by(id:1)  # users.find(1)と同じ意味
“`
ユーザー名で検索する場合
例としてカラム名は`username`にします。

“`
users.find_by(username:’なおき’)
“`

##保存する

“`
user.save
“`
具体例:名前の書き換え

“`
user = User.find(1)
user.username = ‘ばいきんまん’
user.save
“`

##削除

“`
user.destroy
“`
具体

元記事を表示

アプリケーションのオリジナルロゴを簡単に作る方法(スマホで簡単)

#個人アプリのロゴを簡単に作成しよう!(Rubyの記述あり)
##必要なもの
* 「Pics art」
![20b59e6a2f37c51db0f66b2a3a0f7fff.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/725167/9e0be83f-5cd4-440e-6909-acc8feace7a0.png)

* 「背景透明化」
![0d3dfded9fc57049f6e37e3058a0d374.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/725167/b31931c3-2e71-5114-1949-85effa82a1ee.png)
(それぞれapp storeで無料で取得できます)

#好きなように書く!
Pics art
![IMG_1429.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/725167/60399ebc-

元記事を表示

herokuでのrailsアプリケーションのrakeタスクの定期実行について

## この記事で書くこと
N番煎じなことは百も承知だが、忘れないように書いておく。

wheneverというgemがheroku上で動かないのを知らなかったので、そのままデプロイして翌日、あれ?データが作られてない。。。??という悲劇が自分の作ったサービスで起きてました。 :crying_cat_face:

## どうしたらいいか
[heroku schedulerの公式ドキュメント](https://devcenter.heroku.com/articles/scheduler)
heroku schedulerというaddonが用意されている。ので、それを使う。

addonを追加して、 ` lib/tasks/scheduler.rb` にtask内容を追加

“`lib/tasks/scheduler.rb
desc ‘ジョブの用途を書く’
task ジョブ名: :environment do
# 処理
end
end
“`

期待する実行周期を選択し、jobに `run rake ジョブ名` を入力し、設定完了。

元記事を表示

“Uniqueness validator will no longer enforce case sensitive comparison in Rails 6.1.”の対処法

## 内容に関して
– チェリー本で有名な伊藤さんがとても分かり易い記事を書かれているのでそちらを見てください。
– https://qiita.com/jnchito/items/e23b1facc72bd86234b6

## 解決策
– Railsの場合、クエリの実行やMySQLの設定を変更しなくても大丈夫!以下のように書き換えるだけです!
– rails db:resetで行った場合変更が反映されないので注意!
– rails db:dropとrails db:createを実施すること
– おそらくrails db:migrate:resetでもいける。

“` config/database.yml
default: &default
adapter: mysql2
encoding: utf8mb4
charset: utf8mb4 #追記
collation: utf8mb4_bin #追記
reconnect: false
“`

元記事を表示

【Docker】docker-compose上のRailsアプリのDBデータをバックアップ&リストアする方法【MySQL】

現在業務委託でRailsアプリを使ってスクレイピングでデータ収集のお手伝いをさせていただいてるのですが、Docker環境を使っているため何かの拍子にうっかりvolume等を削除してしまったら大変なので、処理が終わるたびにデータのバックアップを取ってます。(レコード数33万件ほどある)

その方法をご紹介します!

##バックアップ手順

バックアップデータを突っ込みたいファイルをRailsのrootディレクトリにつくり以下のコマンドを実行する。

“`shell

$ docker exec -it CONTAINER_NAME(例:myapp_db_1) mysqldump DATABASE_NAME(例:myapp_developmentなど) > backup.sql
“`

##リストア(インポート)手順

取り込みたいバックアップファイル(dump.sql)をRailsのrootディレクトリにつくり以下のコマンドを実行する。

“`shell

$ docker cp dump.sql mydocker_db_1:/tmp/dump.sql
$ docker exec

元記事を表示

ActiveStorageを使って、画像投稿機能実装までの流れ

#はじめに
 よくSNSで画像をあげるような機能があるが、それをRailsで実装するときに使うGemを紹介する。長くなるため、今回は実装の準備段階に絞って投稿する。
全2回の予定。

##Active Storageとは
 現在はGemとしてインストールしなくても、Railsに搭載されている。画像などのファイルのアップロードを簡単に行えるメソッドが使えるようになる、画像を保存するテーブルの作成も簡単に行える。

##画像アップロード機能の実装までの流れ
1. ImageMagickのインストール
2. 2つのGemのインストール
3. ローカルサーバーの再起動
4. Active Strageのインストール
5. テーブルの生成

###1.ImageMagickのインストール
 そもそもImageMagickとは、画像加工ツールであり、Gemではなく、ソフトウェアの部類になる。Homebrewからインストールを行う場合は、

“`bash

brew install imagemagick
“`

 ImageMagickだけでは、Rubyで扱えないので、次の2つのGemをインス

元記事を表示

本日の『railsチュートリアル』で詰まったところ(2020/10/06)

#詰まったところ
##1.3.4 Hello, world!
・事象:`$ git push heroku master`実行後、URLを開くと`Method Not Allowed`と表示される。
・解決方法: 開くURLが間違っていた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/764452/edb6ee09-b7cf-53b8-6815-80c74516360d.png)

・留意点
Heroku導入は難しくて理解を飛ばしたため、振り返る必要あり。

#感想
・1章読了!
・pushとcommitを頭の中でイメージできるようになってきた。
・もしかしてQiitaの使い方間違ってる?日付毎に新しい記事を量産するのではなく、1記事に追記していく形がいいのかもしれない。Qiitaルール要確認。
・Qiitaのマークダウン記法は読んだので多少記事が見やすくなったはず。

元記事を表示

ヘッダーやフッターを一度作って別のページでも流用する方法

#フッターやヘッダーを作ったら他のページにも使いたい!
ポートフォリを制作中
フッターやヘッダーをページが変わるたびに一から作り直すのかなり面倒だなと感じ調べたらすぐに出てきたので共有させてください!

#結論

![スクリーンショット 2020-10-06 22.08.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694122/080aaddd-c07d-cabd-997e-dfb367f07478.png)

このapp > layouts >application.html.erb
の中にある

“`application.html.erb
#開くとすでに記述してあります



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

<%= stylesheet_link_tag 'application', media:

元記事を表示

OTHERカテゴリの最新記事