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

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

[rails] travel_toの不具合とその回避策

この記事は [ビビッドガーデン Advent Calendar 2021](https://qiita.com/advent-calendar/2021/vivid-garden) の11日目です。
自分はビビッドガーデンの社員さんじゃなくて、食べチョクの開発を週3日でお手伝いしているだけの人なのですけど、普通に記事も書かせてくれるし、この間は生産者さんの農場に行って出荷の様子を見せていただくことも出来ました。
こういう分け隔てないやり方が快適でもう一年以上お手伝いをしています。

# travel_toの罠

さて、今日の話題は最近ハマったRailsの不具合について。
時刻に関わるテストをする時、[timecop](https://github.com/travisjeffery/timecop)を使わなくても、Rails標準の[TimeHelpers](https://api.rubyonrails.org/v5.2.6/classes/ActiveSupport/Testing/TimeHelpers.html)を使えばほぼ同等のことができるよ、というのは最近みんな知ってることに

元記事を表示

【Rails】自己結合関連付けでお酒の順番を表現してみた。

本記事は RUNTEQアドベントカレンダー 2021 の11日目の記事となります!

現在私は、一軒目で飲むお酒の順番をユーザーに提供するアプリを作成しています!
今回は、「お酒の順番をまとめたセット」と「お酒単品」を表すに際に学習した、「自己結合関連付け」に関してを書かせていただきます!
(以降、一軒目で飲むお酒の順番は「酒ケジュール」という言葉で表させていただきます。)

【この記事を読んだら】
– 自己結合関連付を理解することができます
– 酒ケジュールを作成することができます。
[![Image from Gyazo](https://i.gyazo.com/68521eedf0b6685e1894f96445fe726d.jpg)](https://gyazo.com/68521eedf0b6685e1894f96445fe726d)

## 自己結合関連付とは?

>同一テーブル内のカラムを関連づけるための処理のこと。

一つのテーブルの中で多対多の関連付けをする際に用いられている表現を指します。

身近な例で言うと、TwitterにおけるFollow,Followe

元記事を表示

[Rails] param is missing or the value is empty error と向き合う

##はじめに

こんにちは!
DMM WEBCAMP Advent Calendar 2021? 11日目を担当させていただきます!
普段DMMでメンターをさせていただいております、@keijitsumoriです。

この記事では、Railsを始めた頃、躓きがちなタイトルのエラーについて、考えられる原因をあげ、その一つについて、RailsのフォームとModel.newの解説を挟みながら、なぜエラーになってしまうのかを、自分なりに説明できればと考えております。

このエラーをきっかけに、Railsの見えていなかった部分が自分も見えるようになりました。
ご指摘等いただけますと幸いです。

#### この記事の対象者

– param is missing or the value is empty errorが解決できない。
– param is missing or the value is empty errorが解決できたが、理由がわからない。

#### この記事でわかること
– 上記のエラーについて、自分が体験したことのある原因を紹介し、エラーの裏で何が起こっているのか

元記事を表示

chart.js × gon → 変数を用いた動的なグラフが描ける!【Rails】

chart.jsはグラフを描画できるツール。
gonというgemを利用することで、コントローラ内で定義した変数をjsファイルで扱えるようになります。

chart.jsを使ったグラフをrailsアプリに表示するまでの手順は以下の記事で紹介しています。今回はこの記事の続きです。
[chart.jsを使用して、3ステップで簡単にグラフを描く【Rails】](https://qiita.com/i-f/items/7a6f94c97421ba63e6be)

# 1. gonを使用する準備

Gemfileに以下を記述して`bundle install`

“`Gemfile.
gem ‘gon’, ‘~> 6.2.0’
“`

`application.html.erb`に以下の記述を追加

“`application.html.erb


<%= include_gon %>


“`

# 2. gonを使ってchart.js用の変数に変換

ここでは`Record`というモデルに、`runday`(走った日)と`distance`(

元記事を表示

Ruby on Rails【プロジェクトを開始する】

#環境
Rails version: 6.0.3
Ruby version: ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]
AWSのCloud9というIDEを使用しています。

ここでは環境構築については割愛します。
なお、環境構築についてこちらを参考にしました。
https://railstutorial.jp/chapters/beginning?version=6.0#code-gemrc

#アプリの開始
作成したいディレクトリに移動して以下のコマンドを実行してください。

“`
$rails _6.0.3_ new app_name
“`
バージョンの指定は任意で、ここでは明示的に6.0.3にしています。app_nameは作りたいアプリケーションの名前です。
このコマンドだけでひとまずアプリを作ることができました。

#ローカルサーバの起動
“`
$rails server
“`
このコマンドを実行するだけです。
Cloud9を使用していないときは
http://localhost:3000/
にアク

元記事を表示

【Rails × Vue】ルーティングエラー404の際に専用のコンポーネントを表示する

#実現したいこと

routes.rbで設定したパス以外のURLにアクセスがあった際(エラーステータス404)にVueで’ページが見つかりません’のようなメッセージを表示するコンポーネントを描出する。

#Rails側の設定

“`routes.rb
Rails.application.routes.draw do

.
.
.
match ‘*path’, :to => ‘application#error404’, :via => :all
#設定外のパスにアクセスがあった際にapplication_controllerの[error404]というアクションを実行する。

end

“`

“`application_controller.rb

class ApplicationController < ActionController::Base rescue_from Exception, with: :error404 rescue_from ActiveRecord::RecordNotFound, ActionController::RoutingE

元記事を表示

bundle instal で起きたエラー (Check the mkmf.log file for more details. You have to install development tools first.)

# 概要
macOSをアップデートしたばかりだと、bundle install した際に下記のエラーが出ることがある。

![スクリーンショット 2021-12-10 22.00.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461885/ec51c97e-c92f-2b21-bf51-053a06ab7c0f.png)

エラーにある通り

“`
/Users/ryotaro/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/extensions/x86_64-darwin-19/2.7.0/racc-1.6.0/mkmf.log
“`

の中身を見てみると

![スクリーンショット 2021-12-10 22.05.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461885/a7dab4a2-ae41-9230-96eb-df4eeddf22f3.png)

これ

元記事を表示

【Rails】scopeメソッドについて【初学者の疑問点を簡潔に解説】

## はじめに
 本記事は、プログラミングの学習を始めて1ヶ月の初学者が、学習を進めていて疑問に思った点について調べた結果を備忘録も兼ねてまとめたものです。
 そのため、記事の内容に誤りが含まれている可能性があります。ご容赦ください。
 間違いを見つけた方は、お手数ですが、ご指摘いただけますと幸いです。

## 今回の疑問点
 今回の疑問点は、

  _scopeメソッドについて_
 
 です。 

 以前、1週間分の投稿を表示させる機能を実装している際に上記について疑問を持ちました。

## 疑問点についての解説

###結論
 scopetメソッドは、Railsのスコープ機能を使用するためのメソッドで、スコープ機能を使用することで、クエリを定義し、同じクエリを複数回使う場合でのメンテナンス性を上げることができる。

###scopeメソッドの使い方
記述方法は以下の通り。
モデルに記述します。

“`app/models/sample.rb
scope: スコープ名, ラムダ式
“`
“`app/models/sample.rb
scope :active, ->

元記事を表示

chart.jsを使用して、3ステップで簡単にグラフを描く【Rails】

# 1. chart.jsを使用する準備
CDN(Content Delivery Network)を利用するとファイルをダウンロードする必要が無いのでとっても簡単です。
headタグ内に以下の記述を追記するだけで完了です。

“`application.html.erb





“`

# 2. グラフをhtml.erbファイルに配置

`canvas`タグを目的のhtml.erbファイルに配置。ここにchart.jsのグラフが挿入されます。
`javascript_pack_tag`は、webpackerがJavaScriptをブラウザに適したファイルにコンパイルする役割を持ちます。

“`index.html.erb

<%= javascript_pack_tag '[bbb(任意の名前)]'

元記事を表示

Rails6でJavascriptが上手く動かない事象への対処法

はじめに

Railsアプリを作成している中で「application.html.erb」ファイルに記載していたJavascriptのコードを別ファイルに移動させたものの、Javascriptファイルが上手く動かなく、苦戦しましたため、備忘をこめて記載致しました。

開発環境

– Mac
– Ruby 2.7.2
– Rails 6.1.3.1

今回実装したいこと

以下コードに記載されてある2つ目のscriptタグに記載されているコードを新たにJavascriptファイルを作成して、「app/javascript/packs」下に格納することです。そして、新たに作成したJavascriptファイルをビューである「app/views/users/show.html.erb」から読み込むことです。

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



StopSweets

元記事を表示

RailsアプリをHerokuデプロイでエラー

RailsアプリをHerokuデプロイ時に2つのエラーが発生しました。
今回はそのうちの1つをメモとして残します。
#環境
* macOS Monterey 12.0.1
* Ruby 3.0.3
* Bundler 2.2.32
* Rails 6.1.4.1

#heroku push でエラー発生

`$git push heroku main`
で、以下のエラーが発生しデプロイに失敗。

“`text:エラーメッセージ
remote: ###### WARNING:
remote:
remote: You have not declared a Ruby version in your Gemfile.
remote:
remote: To declare a Ruby version add this line to your Gemfile:
remote:
remote: “`
remote: ruby “2.7.4”
remote:

元記事を表示

DeviseのUserテーブルにカラムを追加する

###環境
ruby 2.6.3
rails 2.6
cloud9

Gem:devise

###この記事の目標
Devise(Gem)でUserテーブルを作成し、ユーザーネームを新規登録(Sign up)で登録できるようにする

#1 DeviseでUserテーブルを作成

Deviseを使用するとユーザーテーブルを簡単作成してくれます。
まず初めにモデルを作成。

Deviseを使用する場合のモデル作成コマンド(今回はUserモデル)

“`ruby
$rails g devise User
“`

※通常のモデル作成コマンド

“`ruby
$rails g model モデル名
“`
記述方法が違うので注意

**コマンドを実行すると作成される**
**ファイル**
1.モデル(User)
2.マイグレーションファイル

**カラム**
旅行プラン作成サイトTrunkをリリースしました

## 概要
旅行プランを作成、共有、共同編集できるwebサイトをリリースしました
![スクリーンショット 2021-12-07 21.18.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1707048/2ca65d28-2b6a-f56d-b30d-e7be6cef086d.png)

https://trunk-plan.com/

僕は旅行が好きで、長期休暇の時は家族で旅行に行っています。
旅行計画を立てるときはPCのエディタを使ったり表ソフトを使ったりして、メールやLINEで共有していました。
毎回ソフトを起動して作成、保存してファイルやテキストなどを送付する・・・というのは面倒でもう少し効率よくできないかと考えこのサイトを作りました

## 技術
* サーバサイド
* Rails

* フロントエンド
* React
* react material ui

* マップ表示
* mapbox API

* ホスティング
* Heroku

* ssl
* clou

元記事を表示

M1 Mac上でRailsプロジェクトのyarn installができない問題を修正する

## 現象
M1 Macにて、Railsプロジェクトでyarn installしようとすると、下記のようなエラーが出る。

“`
1 error generated.
make: *** [Release/obj.target/binding/src/binding.o] Error 1
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/Users/tpowell/projects/blog-post-debug/self-journal/node_modules/node-gyp/lib/build.js:262:23)
gyp ERR! stack at ChildProcess.emit (node:events:390:28)
gyp ERR! stack at Process.ChildProcess._handle.onexit (node:internal/child_

元記事を表示

Railsの思想

##COC(Convention over Configuration)
**「設定より規約」**
「設定がほとんどの場合で共通ならば、その設定をアプリケーションのデフォルトにすべきである」という考えに基づいている。

メリット

– 他言語のように多くの設定ファイルを書かなくて良い。
– 共通ルールに則ってエンジニア同士のコミュニケーションがスムーズになる。

####命名ルール
データベースのテーブル名はモデルのクラス名の複数形にする。

“`
モデル / クラス | テーブル / スキーマ
Article | articles
LineItem | line_items
Deer | deers
“`

####スキーマのルール
– 外部キー:カラムはテーブル名の“`単数形_id“`にする必要がある。
(例: “`item_id“`、“`order_id“`)
– 主キー:デフォルトでは“`id“`という名前の“`integer“`カラムがテーブルの主キーに使われる(PostgreSQLやMySQLでは“`bi

元記事を表示

RubyやRailsのerbを用いて、文末を「…」に置き換える方法

# はじめに
オーバーフローしてしまったテキストの省略をさせる際に、文末を「…」などに置き換えたいことがあるかと思います。

“` 
開発環境を紹介します。DBにはMySQLを使用しています。Mac OSのバージョンは…
“`

CSSのtext-overflowでも適用できるみたいですが、今回はあえてRubyの力を頼りにしてみました。また、Railsのlink_toを使うことで「…」をリンク化する方法もご紹介します。

# Rubyの場合
Rubyでは表示したい文字列の操作や、文字列内に式や変数を組み込むことが簡単にできます。

“`hoge.rb
exam_text = “テスト文章です。今日もいい天気ですね。懐が寒いです。”
“`

以下の例では、変数exam_textに文字列を代入している前提で記述していきます。

## そのまま表示する

“`hoge.rb
p exam_text
# => “テスト文章です。今日もいい天気ですね。懐が寒いです。”
“`

## 表示する文字列の文字数を指定する。
**文字列[0..n]**と範囲指定をすることで**指定の文字

元記事を表示

【Ruby】クラス内要素の記述順序

##クラス内要素の記述順序

– クラスメソッド
– 初期化メソッド
– パブリックなインスタンスメソッド
– プライベートメソッド

“`ruby
class Sample
# publicなクラスメソッドはその次にインライン形式で書く(class << selfでもよい: 後述) def self.some_method end # 初期化メソッドはクラスメソッドと他のインスタンスメソッドの間に書く def initialize end # publicなインスタンスメソッドはその後に書く def some_method end # protectedメソッドやprivateメソッドは末尾にまとめる protected def some_protected_method end private def some_private_method end end ``` - クラスメソッドが複数ある場合は```class << self```を使うほうが向いてる ```ruby class Sample

元記事を表示

【ruby on rails】回答数0の質問を表示

以下記事の続きとして

質問一覧画面の表示を回答数0のものを表示させる方法を追記

https://qiita.com/syokaturyou/items/0893bbac58637765be58

# 追記箇所

以下ファイルに 回答数0の場合を追記する。

“`app/controllers/posts_controller.rb
class PostsController < ApplicationController def index # 質問一覧を表示する画面 @posts = Post.all @range = params[:range] # 並べ替え選択時のページネーションを場合分け case @range ... (~省略~) ... when "回答数0" @posts = Post.left_joins(:answers).where(answers: {member_id: nil}).page(params[:page]).per(10) end end ...

元記事を表示

【Rails】resourcesとresourceの違い

表記ミスかと思ったらちゃんと“`resource“`も存在した。

##resources

“`routes.rb

resources :posts

“`

“`
Prefix Verb URI Pattern Controller#Action
posts_path GET /posts(.:format) posts#index
POST /posts(.:format) posts#create
new_post_path GET /posts/new(.:format) posts#new
edit_post_path GET /posts/:id/edit(.:format) posts#edit
post_path GET /posts/:id(.:format) posts#show
PATCH /posts/:id(.:format)

元記事を表示

Ruby on Rails 備忘録

https://prog-8.com/

##新規プロジェクト
* 入力したアプリケーション名と同名のフォルダが作成され、その中に開発に必要なフォルダやファイルが用意されます。

“`
rails new tweet_app
“`
##サーバーの起動
* 開発中のアプリケーションをブラウザで表示するためには、サーバーというものを起動する必要があります。サーバーの起動は、「rails server」というコマンドを実行するだけで完了です。
サーバーを起動した後、ブラウザで「localhost:3000」というURLにアクセスすると、右図の初期画面が表示されるようになります。

“`
rails server
“`
##ビュー /トップページの作成

* 新しいWebページが自動で作られ、「localhost:3000/home/top」というURLにアクセスできるようになります。

“`
rails generate controller home top
“`
|ポイント|説明|備考|
|—-|—-|—-|
|top.html.erb|ディレクトリ:app/vi

元記事を表示

OTHERカテゴリの最新記事