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

Rails関連のことを調べてみた2020年06月20日
目次

【Rails】ancestryを用いた多階層カテゴリー機能の実装『seed編』

# 開発環境
・Ruby: 2.5.7
・Rails: 5.2.4
・Vagrant: 2.2.7
・VirtualBox: 6.1
・OS: macOS Catalina

# 前提

下記実装済み。

・[投稿機能実装](https://qiita.com/matsubishi5/items/1a5aeab651b5822d1f2c)
・[多対多のカテゴリー機能実装](https://qiita.com/matsubishi5/items/a805fbcfd96f768dd622)
・[多階層カテゴリー機能実装(準備編)](https://qiita.com/matsubishi5/items/77aadc97a2e63c98cd91)

# 実装

|id|name|ancestry|
|—|—|—|
|1|**ビジネス**|nil|
|2|**金融**|1|
|3|株|1/2|
|4|為替|1/2|
|5|税金|1/2|
|6|**経済**|2|
|7|日本経済|1/6|
|8|国際経済|1/6|
|9|**経営**|3|
|10|経営学|1/9|
|11|戦略・攻

元記事を表示

既読・未読判定機能の実装

# 既読・未読機能の実装方法
まず、簡単なブログ機能のあるrailsアプリがあるとします。
このアプリのブログ詳細画面に遷移した際に、既読となるような仕様で実装していきたいと思います。
※既読/未読機能を実装するために必要なコードのみ載せています。

## ER図
![9E62416E-211A-4FC1-B849-AE2B019E9D50_4_5005_c.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613801/b738bbc2-69ef-ec4f-12d2-31915bf49232.jpeg)

### テーブル

– user
– blog
– read

既読機能を実装するにあたって、userテーブルとblogテーブルの中間テーブルが必要になります。
そこで、readテーブルを作成しました。

### readテーブルのカラム

– user_id
– blog_id
– complete(boolean型)

completeカラムをboolean型とし、既読/未読を真偽値で取得するよう

元記事を表示

Rails 値を正規化する

#値の正規化

ある規則に従うように情報を変換することを正規かと言います。
今回はフリガナとして入力された値が平仮名だった場合に正規化して
カタカナにするという正規化を行ってみます。

まずapp/models/concernsディレクトリにnormalizerを作成していきます。

“`string_normalizer.rb

require “nkf”

module StringNormalizer
def normalize_as_furigana(text)
NKF.nkf(“-W -w -Z1 –katakana”, text).strip if text
end
“`

以下のコードが実際に正規化を行っています。

“`ruby
NKF.nkf(“-W -w -Z1 –katakana”, text).strip if text
“`

指定される引数は以下のような意味です。

**NKF#nkfメソッドの引数**

| フラグ | 意味 |
|:—————–|————-

元記事を表示

【Rails】ancestryを用いた多階層カテゴリー機能の実装『準備編』

# 開発環境
・Ruby: 2.5.7
・Rails: 5.2.4
・Vagrant: 2.2.7
・VirtualBox: 6.1
・OS: macOS Catalina

# 前提

下記実装済み。

・[投稿機能実装](https://qiita.com/matsubishi5/items/1a5aeab651b5822d1f2c)
・[多対多のカテゴリー機能実装](https://qiita.com/matsubishi5/items/a805fbcfd96f768dd622)

# 実装

### 1.Gemを導入

“`ruby:Gemfile
# 追記
gem ‘ancestry’
“`

“`terminal:ターミナル
$ bundle
“`

### 2.カラムを追加

データ量がかなり多くなるので`index`を張ります。

“`terminal:ターミナル
$ rails g migration AddAncestryToCategory ancestry:string:index
“`

“`terminal:ターミナル
$ rails db:m

元記事を表示

【enum】 rails enumを利用してデータの可読性をあげよう

##【ゴール】
rails においてenumの使用

![画面収録 2020-06-19 19.28.08.mov.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620689/60c48f87-cc70-8c9e-1088-200d92cbcaf5.gif)

##【メリット】
■ dbの可読性向上、管理しやすい
■ 日本語化にも応用が効く

##【開発環境】
■ Mac OS catalina
■ Ruby on Rails (5.2.4.2)
■ Virtual Box:6.1
■ Vagrant: 2.2.7

##【実装】
####と言ってもとても簡単!!!!対象のモデルに追記するのみ

※①が一番簡単な書き方
※②だと日本語も可能

“`model/hoge.rb
① enum カラム名:[:任意の単語, :任意の単語, :任意の単語, :任意の単語]
② enum カラム名:{“任意の単語”: 1,”任意の単語”: 2…….}
“`

※number_field をsele

元記事を表示

Rails6でのcocoon

#スクールではrails5で開発を行ってcocoonを使っていて、。同じ方法でrails6でも親子関係のテーブルに複数画像データを保存しようとしたら、追加ボタンが作動しなかった。備忘録として投稿

##参考URL

Introducing jQuery in Rails 6 Using Webpacker

##原因
そもそもcocooonとjqueryの導入の仕方が変わっていました。

##rails5では以下のように実装をした
###1.gemのインストール

“`Gemfile.
gem ‘cocoon’
gem ‘jquery-rails’

#画像投稿するためにrefileを使用
gem ‘refile’, require: ‘refile/rails’, github: ‘manfe/refile’
gem ‘refile-mini_magick’
“`

###2.app/assets/javascripts/application.js

“`application.

元記事を表示

payjpを使って購入機能を実装でい!!

こんにちは。
今日は雨ですね。
偏頭痛持ちの方は気をつけてください。

毎年傘を10本無くす私が言うのは全然説得力が無いと思うのですが、

#傘は忘れない様に!!!

さぁ今回はpayjpを使って購入機能を実装するわよ。
(フリマアプリを作成中デスゥ)

payjp導入編もあるので見てない方は先にそちらをチェケラッ

[payjp導入編](https://qiita.com/rockettetsu/items/445d949ffcb28441a187)
[クレジットカード登録編](https://qiita.com/rockettetsu/items/0bc062909a6ce3904506)
[ビューなどの補足編](https://qiita.com/rockettetsu/items/3c7564087254fcca0fa0)

#1 まずはルーティングを決めます。

この購入機能をどのコントローラーに入れるかですわねぇ。
色んな記事を読む限り

・商品コントローラーに入れる
・カードコントローラーに入れる
・購入コントローラーを新しく作る

アタイ的には商品テーブルに購入者、購入

元記事を表示

[Rails]logフォーマットを自分好みに変更する

## 前提

* ruby: 2.7.1
* Rails: 6.0.3

## 自分好みの Formatter を定義する

“`ruby:config/logger_my_formatter.rb
class Logger
class MyFormatter < Formatter def call(severity, time, progname, msg) "[%s#%d] %5s -- %s: %s\n" % [format_datetime(time), $$, severity, progname, msg] end end end ``` ## 自分好みの Formatter を指定する ```ruby:config/application.rb require_relative 'boot' require_relative 'logger_my_formatter' # 追記 # ... ``` 動作確認は `production` モードで行います(`development`モードは`ActiveSupport::L

元記事を表示

AWS☆☆☆ デプロイまでの道のり3(短いバージョン、全5回)

### 1)背景
第3回目です。自身のポートフォリオをデプロイするために、いよいよunicornを介してrailsを起動します。
AWS関連手順記事はすごく多いので、ここでは備忘録も含めて、非常に端的に手順を記載します。
全5話で進めます。

### 2)環境

| 項目 | 内容 |
|:—————–|:——————:|
| OS.Amazon Linux AMI | release 2018.03 |
| Ruby | v2.5.1 |
| Ruby On Rails | v5.2.4.3 |
| MySQL | v5.6 |
| Unicorn | v5.4.1

元記事を表示

FinderのデフォルトテキストエディタをAtomに変更する方法

システム環境設定からデフォルトテキストエディタを変更出来なかったのでやり方を調べてみました。

#手順

1.Finderから適当なテキストファイルを右クリックし「情報を見る」を選択
2.▼このアプリケーションから設定したいテキストエディタを選択(今回はAtom)
3.その下の「全てを変更」で設定完了

3を飛ばせばファイルごとにエディタを選択できるみたいですね

元記事を表示

【後編】「Everyday Rails – RSpecによるRailsテスト入門」を Rails 6 で勉強したいので伊藤さんのブログを参考にして頑張ってみた

# はじめに

この記事は、タイトルのとおり、「Everyday Rails」を Rails 6 で勉強したいので、
書籍の翻訳者である伊藤さんのブログを参考にして頑張ってみた記録を記したものである。

記事自体が長くなったので、導入編・前編・中編・後編に分割している。

Rails 6 へのアップグレードは非常に時間がかかるので、いきなり挑戦するのではなく、
まず導入編を読んでいただき、本当に挑戦するのか検討することを強く勧めます。

記録を見たい方は、以下を参照すること。

> [【導入編】「Everyday Rails \- RSpecによるRailsテスト入門」を Rails 6 で勉強したいので伊藤さんのブログを参考にして頑張ってみた \- Qiita](https://qiita.com/miketa_webprgr/items/a93c320fb9e3b4f0b6a5)
> [【前編】「Everyday Rails \- RSpecによるRailsテスト入門」を Rails 6 で勉強したいので伊藤さんのブログを参考にして頑張ってみた \- Qiita](https:/

元記事を表示

【中編】「Everyday Rails – RSpecによるRailsテスト入門」を Rails 6 で勉強したいので伊藤さんのブログを参考にして頑張ってみた

# はじめに

この記事は、タイトルのとおり、「Everyday Rails」を Rails 6 で勉強したいので、
書籍の翻訳者である伊藤さんのブログを参考にして頑張ってみた記録を記したものである。

記事自体が長くなったので、導入編・前編・中編・後編に分割している。

Rails 6 へのアップグレードは非常に時間がかかるので、いきなり挑戦するのではなく、
まず導入編を読んでいただき、本当に挑戦するのか検討することを強く勧めます。

記録を見たい方は、以下を参照すること。

> [【導入編】「Everyday Rails \- RSpecによるRailsテスト入門」を Rails 6 で勉強したいので伊藤さんのブログを参考にして頑張ってみた \- Qiita](https://qiita.com/miketa_webprgr/items/a93c320fb9e3b4f0b6a5)
> [【前編】「Everyday Rails \- RSpecによるRailsテスト入門」を Rails 6 で勉強したいので伊藤さんのブログを参考にして頑張ってみた \- Qiita](https:/

元記事を表示

【前編】「Everyday Rails – RSpecによるRailsテスト入門」を Rails 6 で勉強したいので伊藤さんのブログを参考にして頑張ってみた

# はじめに

この記事は、タイトルのとおり、「Everyday Rails」を Rails 6 で勉強したいので、
書籍の翻訳者である伊藤さんのブログを参考にして頑張ってみた記録を記したものである。

記事自体が長くなったので、導入編・前編・中編・後編に分割している。

Rails 6 へのアップグレードは非常に時間がかかるので、いきなり挑戦するのではなく、
まず導入編を読んでいただき、本当に挑戦するのか検討することを強く勧めます。

導入編・中編・後編については、以下を参照すること。

> [【導入編】「Everyday Rails \- RSpecによるRailsテスト入門」を Rails 6 で勉強したいので伊藤さんのブログを参考にして頑張ってみた \- Qiita](https://qiita.com/miketa_webprgr/items/a93c320fb9e3b4f0b6a5)
> [【中編】「Everyday Rails \- RSpecによるRailsテスト入門」を Rails 6 で勉強したいので伊藤さんのブログを参考にして頑張ってみた \- Qiita](h

元記事を表示

【導入編】「Everyday Rails – RSpecによるRailsテスト入門」を Rails 6 で勉強したいので伊藤さんのブログを参考にして頑張ってみた

# はじめに

この記事は、タイトルのとおり、「Everyday Rails」を Rails 6 で勉強したいので、
書籍の翻訳者である伊藤さんのブログを参考にして頑張ってみた記録を記したものである。

ただ、記事自体が長くなったので、導入編ではその記録を記していない。
**Rails 6 で勉強する場合は時間がかかるので覚悟した方がよい**という注意喚起のみしか記載していない。

記録を見たい方は、以下を参照すること。

> [【前編】「Everyday Rails \- RSpecによるRailsテスト入門」を Rails 6 で勉強したいので伊藤さんのブログを参考にして頑張ってみた \- Qiita](https://qiita.com/miketa_webprgr/items/8d44428e5bbe8f6b3f6a)
> [【中編】「Everyday Rails \- RSpecによるRailsテスト入門」を Rails 6 で勉強したいので伊藤さんのブログを参考にして頑張ってみた \- Qiita](https://qiita.com/miketa_webprgr/ite

元記事を表示

ProgateのRuby on Railsコースの気になった所【params】

プログラミング未経験の初心者ですが、少し前にProgateのRuby on Railsコースを終わりました。

Railsチュートリアルをしながら復習してみると、Progateをやっていた時はあまりピンと来なかったけど、今なら少し理解できることが増えたので、気づいた点をまとめていきたいと思います。
Progateしているけど、ピンと来ていないな、ここ分からないなと思っている方のお役に立てば幸いです。

# paramsとは何か【コースⅢ】
Railsコースで頻出するparamsですが、正直「わかるような、わからないような…」と思っていました。

平たく言うと、
paramsはURLから送られてきた値やフォームで入力した値を`params[:パラメーター名]`で取得するメソッドです。

2020/6/20 とても参考にしたページのURLを追記します
https://note.com/sakusaku34/n/nc143e418b700

例をあげると投稿内容の詳細ページの場合だとこのような使い方になります。

def show
 @post = Post.f

元記事を表示

楽天ブックス(DVD)APIで検索機能実装する

#はじめに
現在映画検索サービスを開発中でrails,ajaxを使って非同期通信を実装しておりました。
数日間ハマった後、ようやく実装できたので記録を残しておきます。
jqueryはハンバーガーボタン等、動きをつける時など、少し触りましたがAjaxを触るのは初めてで数日はまりました。(サーバー再起動してないためコードが反映されてないとかの関係もありました。)

#環境
-rails (5.2.4.1)
-ruby (2.5.3)

__楽天API__を実装する方は(__Rails__の場合)__gem__をインストールしてください。
実装手順は省きます。
詳しくは[__コチラ__](https://github.com/rakuten-ws/rws-ruby-sdk/blob/master/README.ja.md)

#コントローラー処理指定

まずはじめに、検索欄に記入された内容を処理させるためにposts_contriller内のアクションを指定します。

“`ruby:routes.rb
get ‘search’, to: ‘posts#search’ #キーワードを検索した

元記事を表示

Railsで「整数のみ」、「0以上の正の数のみ」のvalidatesの書き方

#環境
Rails 5.1.7
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]

#結論
“`
validates :price, presence: true, numericality: {only_integer: true, greater_than_or_equal_to: 0}
“`

#解説
「整数のみ」の箇所
“`only_integer: true,
“`

「0以上の正の数のみ」の箇所
“`greater_than_or_equal_to: 0
“`

元記事を表示

Rails Vue の「Hello Vue!」が表示できない

# 起こっていたこと

## ブラウザ

なにも表示されない。真っ白のまま。

## 開発者コンソール

警告が表示されていた。

“`
[Vue warn]: You are using the runtime-only build of Vue where the template compiler is not available. Either pre-compile the templates into render functions, or use the compiler-included build.
“`

### その訳

“`
[Vue warn]。テンプレートコンパイラが利用できないVueの実行時のみのビルドを使用しています。テンプレートをレンダリング関数にプリコンパイルするか、コンパイラを含むビルドを使用します。
“`

# ファイル内容

“`hello_vue.js
import Vue from ‘vue’;
import App from ‘./app.vue’

document.body.appendChild(document.cr

元記事を表示

カラムのdefault制約をマイグレーションで変更する

### emailカラムのDEFAULT制約を消す

“`diff:schema.rb
create_table “users”, force: :cascade do |t|
– t.string “email”, null: false, default: “”
+ t.string “email”, null: false
end
“`

“`ruby
class RemoveDefaultRestrictFromUsers < ActiveRecord::Migration[6.0] def change change_column_default :users, :email, from: "", to: nil end end ``` 補足:from-toを省略した `change_column_default :users, :email, nil` の書き方でもdefault制約を消すことはできたのですが、`db:rollback`が失敗します。(元の値が分からなくなるため) ### adminカラムの初期値をtrueからfalseに変える

元記事を表示

【Rails】多対多のカテゴリー機能の実装

# 目標

![ezgif.com-video-to-gif (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579893/8224071c-70fc-f8dd-c7b3-4ec67f19d85f.gif)

# 開発環境
・Ruby: 2.5.7
・Rails: 5.2.4
・Vagrant: 2.2.7
・VirtualBox: 6.1
・OS: macOS Catalina

# 前提

下記実装済み。

・[Slim導入](https://qiita.com/matsubishi5/items/b639ffddecc626856039)
・[Bootstrap3導入](https://qiita.com/matsubishi5/items/b117c95f4dd71340cc80)
・[投稿機能実装](https://qiita.com/matsubishi5/items/1a5aeab651b5822d1f2c)
・[カテゴリー機能実装](https://qiita.com/matsub

元記事を表示

OTHERカテゴリの最新記事