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

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

【超初心者的】Rails 多言語化対応

##設定

27行目あたり。タイムゾーン設定の下に追加

“`ruby:config/application.rb
config.i18n.default_locale = :ja
“`

##gem

末尾に追記

“`ruby:config/Gemfile
gem ‘rails-i18n’, ‘~> 6’
“`

##インストール

“`terminal:ターミナル
% bundle install
“`

##翻訳ファイルの作成

“`ruby:config/ja.yml
ja:
activerecord:
models:
menu: メニュー
attributes:
menu:
name: 商品名
price: 値段
description: 説明
“`

Railsサーバ再起動で読み込まれる

##使用例

自動的に`ja.yml`に記載した日本語で表示される

formの場合

“`rhtml:
<%= form.label :name %>
<%= form.l

元記事を表示

【超初心者的】Rails テーブル操作

##カラムの追加

“`terminal:ターミナル
% bin/rails g migration AlterMenus
“`

日付のついたファイルが自動的に作成されるので、ファイルを編集。
以下は「menus」というテーブルに「shop」というカラムを「string型」で登録する例。

“`ruby:db/migrate/20200702105650_alter_menus
def change
add_column :menus, :shop, :string
end
“`

マイグレーション実行

“`terminal:ターミナル
% bin/rails db:migrate
“`

##ロールバック操作

1つ前に戻す

“`terminal:ターミナル
% bin/rails db:rollback
“`

3つ前に戻して再度migrationを実行

“`terminal:ターミナル
% rake db:migrate:redo step=3
“`

指定のバージョンに戻す

“`terminal:ターミナル
% bin/rail

元記事を表示

rails db:migrate:resetでのエラー

#プログラミングの勉強日記
2020年8月10日 Progate Lv.226
[rails db:migrateでのエラー](https://qiita.com/mzmz__02/items/c3b86f49ffeef19f74e1)という記事でマイグレーションファイルを操作するときにエラーが起きて、`rails db:migrate:reset`で対処すると述べたが、この`rails db:migrate:reset`を使おうとするとエラーが出たのでこれの対処をする。

#エラー内容
 Rails自体のバグ(?)で、Windowsでは自分がアクセスしてるファイルを削除できないことが問題になっているみたい、、

“`terminal:ターミナル
$ rails db:migrate:reset
C:/Ruby26-x64/lib/ruby/2.6.0/x64-mingw32/etc.so: warning: already initialized constant Struct::Passwd
le::VERSION
C:/Ruby26-x64/lib/ruby/gems/2.6.

元記事を表示

【Rails】ArgumentError: Malformed version number string 0.32+gitでwebpacker:installが実行できない場合の対処方法

## はじめに
`webpacker:install`を実行すると表題のエラーメッセージが表示されてしまい、Railsが実行できない状況が起きました。
今回はこの現象の回避方法についてまとめます。

## この記事の対象者
– 表題のエラーメッセージが表示され、`webpacker:install`を実行できない人

## 実際にどのようなエラーになるのか
### エラーに遭遇した環境
Docker公式の`Ruby:2.7.1`を利用したコンテナで遭遇しました。
他の環境では試していないため、同じ方法で対処できると断定はできませんが、参考になればと思います。
使用したDockerfileとRailsのバージョンは以下の通りです。

“`dockerfile:Dockerfile
FROM ruby:2.7.1
LABEL maintainer=”TomoProg”
RUN apt-get update -qq && apt-get install -y \
build-essential \
libpq-dev \
nodejs \
default-m

元記事を表示

[Rails]deviseを使ったウィザード形式での新規登録機能の実装

# はじめに
フリマのコピーサイトを作る際に、構造をやや難しくしてしまったために苦労したので記録として残そうと思いました。もっと綺麗にかけるなどご指摘あればお願いします。
# 実装方法

### 開発環境
– Ruby 2.5.1
– Rails 5.0.7.2
– devise

###前提
– deviseは導入済み
– deviseのデフォルト状態でのログイン機能は実装済み
– 1ページ目 → 2ページ目 → トップページ(ログイン)と遷移する
– テーブルは、`users` `profiles` `sending_destinations`の3つ
– 1ページ目は1つのフォームで`Userモデル`と`Profileモデル`の二つを扱っている
※2つのモデルに同時に値を送る方法はこちらの記事を参考にしています。
[【Rails】deviseのフォームで2つのモデルに同時に値を送る方法(例: UserモデルとProfileモデル)](https://qiita.com/wonder_meet/items/9238d9bedea542ab975b)

### DB設計

元記事を表示

RailsにVue.jsを導入する準備

# はじめに

バージョン
Ruby ‘2.6.5’
Rails ‘6.0.3’
Vue.js ‘2.6.11’

Railsは6.0以降。

# Vue.jsの導入
Webpackerを用いてインストール

“`:ターミナル
rails webpacker:install:vue
“`
Vue.jsを読み込む

“`erb:app/view/layouts/application.html.erb



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

<%= stylesheet_link_tag 'application', media: 'all' %>
<%= javascript_pack_tag 'application' %>
  <%# 以下の一行を追加 %>
<%= javascript_pack_tag 'hello_vue' %>

元記事を表示

Rails reference型 作成 追加

#はじめに
今回はrailsでのマイグレーション時にreference型を扱うことがことがあったのでまとめる。

#外部キーとは
reference型を扱うにあたって外部キーについて知っておかなくてはならない。

>外部キーとは、リレーショナルデータベース(RDB)で、テーブルのある列に、別のテーブルの特定の列に含まれる項目しか入力できないようにする制約。また、その際に指定する列
http://e-words.jp/w/%E5%A4%96%E9%83%A8%E3%82%AD%E3%83%BC.html#:~:text=%E5%A4%96%E9%83%A8%E3%82%AD%E3%83%BC%E3%81%A8%E3%81%AF%E3%80%81%E3%83%AA%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%AB,%E3%82%92%E7%94%A8%E3%81%84%E3%81%A6%E8%A8%AD%E5%AE%9A%E3%81%A7%E3%81%8D%E3%82%8B%E3%80%82

今回はarticlesテーブルにre

元記事を表示

初歩中の初歩!railsでのモデル・コントローラー作成方法

#モデル作成方法

“`
rails g モデル名(単数)
“`

マイグレーション型一覧
・string : 文字列
・text : 長い文字列
・integer : 整数
・float : 浮動小数
・decimal : 精度の高い小数
・datetime : 日時
・timestamp : タイムスタンプ
・time : 時間
・date : 日付
・binary : バイナリデータ
・boolean : Boolean

“`db/migrate
class CreateExercises < ActiveRecord::Migration[6.0] def change create_table :テーブル名(複数形) do |t|     t.migrate型 :カラム名(単数) t.string :part t.text :url t.integer :level t.timestamps end end end ``` ここまで設定できたらお決まりの ``` rails db:migr

元記事を表示

【rails】DEPRECATION WARNING: Leaving `ActiveRecord::ConnectionAdapters::SQLite3Adapter.represent_boolean_as_integer` … を直す方法

以下のエラーが出た場合

“`error
DEPRECATION WARNING: Leaving `ActiveRecord::ConnectionAdapters::SQLite3Adapter.represent_boolean_as_integer`
set to false is deprecated. SQLite databases have used ‘t’ and ‘f’ to serialize
boolean values and must have old data converted to 1 and 0 (its native boolean
serialization) before setting this flag to true. Conversion can be accomplished
by setting up a rake task which runs

ExampleModel.where(“boolean_column = ‘t'”).update_all(boolean_column: 1)
ExampleModel.wh

元記事を表示

コンテナ上のデバッグ環境構築 – DockerでRailsチュートリアルのローカル開発環境構築 –

# はじめに

Dockerでローカル開発環境構築を行い、Railsチュートリアルを再走しております

– Railsチュートリアル最新版(2020.8.6現在)に対応のRails 6
– Dockerを使用し、開発環境の再現が可能
– なるべくローカル環境にインストールしない

今回はRailsチュートリアルの7章に相当する部分で、
Dockerコンテナ上で開発を行っている場合にデバッグを行う内容を紹介します

第一回
[DockerでRailsチュートリアルのローカル開発環境構築(Rails 6 + PostgreSQL + Webpack) – Qiita](https://qiita.com/daddy_hacker/items/99225bf3d8665ecfdec2)

第二回
[DockerでRailsチュートリアルのローカル開発環境構築 – RSpec導入 & CircleCIでHerokuデプロイ- – Qiita](https://qiita.com/daddy_hacker/items/7036f05c0f236be8806a)

第3回
[DockerでRa

元記事を表示

devise導入後migrateをしたらmax key length is 767 bytesエラーが。

#今回のエラー

ユーザー認証のdeviseを導入しようと

“`
rails db:migrate
“`

を実行したらこんなエラーが

“`
== 20200809082251 DeviseCreateUsers: migrating ================================
— create_table(:users)
-> 0.0154s
— add_index(:users, :email, {:unique=>true})
rails aborted!
StandardError: An error has occurred, all later migrations canceled:

Mysql2::Error: Specified key was too long; max key length is 767 bytes
.
.
.
.
.
“`

#解決方法

###1.mysql.rbを新規作成

https://qiita.com/terufumi1122/items/9ea764618eba01144e09
こちらの

元記事を表示

Rails のエラーメッセージを日本語で表示出来るようにする。

##概要
Railsではエラーメッセージの表示をする際に英語になっています。
日本語でエラーメッセージを表示するやり方について簡単に説明します。

日本語でエラーメッセージを表示する為には
日本語用の翻訳ファイルを作成する必要があります。

自分で作成することも可能ですが、
今回はGitHubのrails-I18nリポジトリに既に作成されている物を使う方法について説明します。

##1.翻訳ファイルをGitHubからダウンロード

※「・github から直接コピーする」「・wgetでファイルごとコピーする」
↓2つのやり方を説明していますがどちらの手法を取っていただいても構いません。

・github から直接コピーする
https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/ja.yml
上記のURLにある内容をコピーして、自身のプロジェクトに ‘/locale/ja.yml’ を作成して内容をペーストしてください。

・wgetでファイルごとコピーする

“`:command

$ wget http

元記事を表示

【Rails】FlipperでFeature Flagを導入

railsで作ったapiの利用可否を切り替えられるように、feature flag(機能フラグ)を導入したいということで、[flipper](https://github.com/jnunemaker/flipper)というgemを使いました。
環境は、rails6.0.3 apiモードです。

# feature flag(機能フラグ)とは
アプリケーションの各種機能の有効無効を、**コードはそのままに、再デプロイもせずに**、実行中のプログラムの外部から切り替えるための仕組みです。

少し細かく書くと、

* ある機能の使用可否を判定するフラグを用意でき、
* フラグのON/OFFは、ユーザ全体だけでなく、特定のユーザや、ユーザのグループ単位でも行える
* フラグのON/OFFは、コードの変更なしに、**railsコンソール上や、外部からweb UIやapiで行える**

といったことを実現するものです。

# gemの導入手順
* まず、Gemfileに下記を設定します。

“`ruby:Gemfile
gem ‘flipper’ # flip

元記事を表示

Railsのデータの型について

#Railsのデータの種類について
データ型のカラムの種類を何を使っていいのだろうかとよく考える事があったので備忘録。
##migrationに追加できるカラム
|型 | 説明 | 用途 |
|:——————-:|:——————:|:——————:|
|string | 文字(255文字まで)|名前やメールアドレスなど短い文字|
|text |長い文章 |ブログの記事や投稿される内容|
|integer| 整数(4byte)| 通常使用する範囲の整数で保存したいとき|
|smallint| 整数(2byte)| 狭範囲の整数で保存するとき|
|bigint|整数(8byte) |かなり大きな整数で保存する可能性があるとき|
|float |浮動小数点数 |小数点を含めた数値を保存したいとき|
|numeric| 固定長整数| 桁の大きな数を桁数などを指定して保存したいとき|
|boolean| 真か偽か |trueかfals

元記事を表示

リファクタリングしてみた①

## バージョン
・ruby 2.5.7
・Rails 5.2.4.3

## ポートフォリオのコードをリファクタリング
まず、現状はというと下記の通り。ひどい、、。ほぼ同じ事を書いているアクション名が8つ存在している。まず、そのdate1からdate8のアクションをリファクタリングしてみる。
スクリーンショット 2020-08-09 14 27 08
スクリーンショット 2020-08-09 14 27 26
スクリーンショッ</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Ruby</div>
<div class='tag-cloud-link'>Rails</div>
<div class='tag-cloud-link'>リファクタリング</div>
<div class='tag-cloud-link'>ポートフォリオ</div>
<div class='tag-cloud-link'>RubyOnRais</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/m75cCMbYv5LEsO8/items/b82627d5be7d5f1f8a0a'>元記事を表示</a></div>
<h3 id=Ruby on RailsにReactとReduxの環境を標準のWebpackで構築する

# 概要
Ruby on Rails上でReactを利用する場合、通常はGemのWebpackerを利用します。

ただ、アセットパイプライン上でのビルドが遅かったり、
Webpackのカスタマイズ方法が特殊だったりで使いずらいので、
Gemを使わずに設定します。

今回は標準のWebpackを導入した上で、Reactとの繋ぎ込みを目的としています。

Rails側から呼び出すコンポーネントを管理したいため、
ストラクチャ設計が分かりやすいReduxのRe-ducksパターンを採用した方法で構築を行っていきます。

また、ReactとReduxについての設定方法がSPAを全体としたものが多いですが、
Railsに実装する場合は既存プロジェクトにページ毎にReactを使うことが多いため、
Railsでルーティングを管理する場合での使用方法を書いていきます。

# スペック
* CentOS7
* Ruby 2.7.1p83
* Ruby on Rails 5.2.4
* node js 13.14.0
* react 16.12.0

今回はWebpackでAssetを用意して、ファイ

元記事を表示

Active Recordのバリデーション機能

# バリデーション
データベースに書き込まれる前に実行される、モデルの状態の検証(バリデーション)のこと。

## 使うには
Active Recordのモデルを作成する。 下記のように`ApplicationRecord`のサブクラスを作成する。

“`
class User < ApplicationRecord validates :name, presence: true end ``` また、`ActiveModel::Validations`モジュールを追加すると、クラスオブジェクトをActive Recordスタイルで検証できる。 ``` class User include ActiveModel::Validations attr_accessor :name validates :name, presence: true end ``` ## 基本の使い方 Userクラスを作成、テーブルを作成します。 ``` rails generate model User name:string email:string age:integer ra

元記事を表示

【Rails】summernote 本番環境で画像保存ができない時の解決方法

# はじめに
某スクールの学習過程ポートフォリオ作成の際に、**Gem ‘summernote’**を用いて
リッチテキストエディタを実装しました。

開発環境上では画像を含めたテキストの投稿が可能でしたが、
デプロイ後の本番環境にて画像を投稿しようとすると下記エラーが発生し、投稿保存がされませんでした。

“`ターミナル
(0.5ms) ROLLBACK
Completed 500 Internal Server Error in 46ms (ActiveRecord: 12.9ms)
ActiveRecord::ValueTooLong (Mysql2::Error: Data too long for column ‘article_content’ at row 1:
INSERT INTO `articles` (`admin_id`, `article_title`, `article_content`, `article_image_id`, `created_at`, `updated_at`) VALUES (1, ‘観葉植物の置き場所はどこがいいか’, ‘

元記事を表示

【超初心者的】Railsアプリ作成 Part.3 ビューの設定(リンク編)

ここではビューをもう少しアプリっぽくしていきます。

##詳細ページへのリンク

一覧ページの商品名をリンクにして、クリックすると商品詳細ページが表示されるようにします。
`

<%= menu.name %>

`を書き換えます。

“`rhtml:app/views/menus/index.html.erb

<%= link_to menu.name, menu %>

“`

http://localhost:3000/menus にアクセスしてみてください。商品名がリンクになっていると思います。また、クリックするとその商品の詳細(show)ページに遷移します。

##リンクの仕組み

リンクの書式は下記のとおりです。

`link_to 表示される文字, リンク先`

「表示される文字」には文字を書いても構いませんが、データベースに登録されたデータがたくさんある場合、いちいち手入力するのは現実的ではありません。そのため「menu.name」でデータベースから商品名を読み込んでいます。

なお、前のPartで作成したindexビューでは、繰り返し処理

元記事を表示

Rails c Rollbackエラー原因を探る

### はじめに
開発初期段階で、usersテーブルのレコードを作成したくてrails consoleを使用。しかし、Rollbackのエラーが出てしまい保存ができない。その上、Rollbackの原因も明記されていない。これでは原因を探すのが手探りになってしまう。ということで、原因を楽に探す方法はないものかとググった結果ありました!なので、その方法の備忘録として書き記します。

###方法
やり方はとてもシンプル!createメソッドの後ろに!をつけるだけ!

元記事を表示

OTHERカテゴリの最新記事