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

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

resource resourcesって何が違うの??

## Railsルーターの目的
そもそもルーティングは何をしてるんや。という話。
Railsのルーターは受け取ったURLを認識し、適切なコントローラ内アクションやRackアプリケーションに割り当てます。ルーターは、ビューでこれらのパスやURLを直接ハードコードすることを避けるためにパスやURLを生成することもできます。

つまり受け取ったURLを捌いて指示を出す、司令塔ですよってこと。

## resources と resource の違い
①URLにidを必要とするかしないのか
②resourceの場合単数なので、一覧みたいな概念はなく、indexが作られない

## resources 複数
リソースをいくつも定義しなければならない場合は、以下のように簡単にわかりやすくできる。get,new,create,edit,update,destroy,showがresourcesでまとめられる!(only、exceptで限定することも可能)

resources :photos, :books, :videos
上の記法は以下と完全に同一です。

resources

元記事を表示

Heroku Postgres じぶんまとめ

# プランアップする
## 1.まずは追加
新しいDatabaseをリソースから追加する。追加するときに、採用したいプランを選ぶ。
HEROKU_POSTGRESQL_CYAN のように追加される。PINKとか色の名前が割り当てられている模様。

## 2.copy
Database を追加した後、追加された HEROKU_POSTGRESQL_CYAN へコピーする。

“`
heroku pg:copy DATABASE_URL HEROKU_POSTGRESQL_CYAN –app myapp
“`

## 3. DATABASE 削除
古い方を削除。DATABASEがない状態になる。
フロントとめておくためにはメンテナンスモードにする。

## 4. attachment
同じ app に attach すると、DATABASEに割り当てられる。
その後、CYAN を削除する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141741/9c16589e-8181-3

元記事を表示

DB設計でのデータ型の決定方法

# そもそもなぜデータ型を指定しないといけないの?
データ型を指定するという事は変数がどのくらいのメモリ領域を必要とするかをDBに教えてあげる行為です。

仮にデータ型を指定する,というプロセスがない場合どうなるでしょうか?

宣言された変数はどんな型のデータが入ってもいいように、一番大きくメモリを使うデータ型の分,メモリを占有します。

ユーザーが少ないWebアプリの場合なら一つ一つのメモリが無駄にスペースを取っていても処理結果の差を感じる事はありませんが,TwitterやYouTube等の大型サービスになっていくと無視できない存在になってきます。

ですので,自分の開発アプリが大規模なユーザーを抱えていくであろう事を期待しつつ,丁寧に一つ一つのカラムにデータ型を記述していきましょう。

# とりあえずよく使うデータ型について復習しよう
個人的によくみるデータ型を列挙してみますので復習がてらに確認していきましょう。

| データ型| 特殊能力 |
|:-:|:-:|
|string |文字列(1〜255文字) |
|text |文字列(1〜4294967296文字) |
|in

元記事を表示

【Favorite】Rails いいね機能 実装

![画面収録 2020-04-30 0.34.38.mov.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620689/1a76630c-5733-87a0-7e95-1cb7e3a96974.gif)

#【ゴール】
ユーザーに投稿に対していいね機能を実装する
いいねを押すとハートが赤くなる

参考:https://qiita.com/nojinoji/items/2c66499848d882c31ffa

#【メリット】
UI、UXの向上
アソシエーションの理解度向上

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

#【実装】 ”user” “post”機能実装は割愛

1. favorite model作成

“`mac.terminal
$ rails g model Favorite
“`

2. アソシエーション 追記

※ user : favorite

元記事を表示

docker-composeでアプリサーバーコンテナからMySQLサーバーコンテナに接続する。

#実行環境
Docker for Mac
Docker version 19.03.8

簡単な事だけどかなり手こずったのでまとめ。

**Dockerfile**

“`
FROM ruby:2.7.1-buster

RUN gem install rails

# node.jsをインストール
RUN apt-get update && \
apt-get install -y node.js

# yarnをインストール
RUN apt-get update && apt-get install -y curl apt-transport-https wget && \
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add – && \
echo “deb https://dl.yarnpkg.com/debian/ stable main” | tee /etc/apt/sources.list.d/yarn.list && \
apt-get update && ap

元記事を表示

Android、Chrome、CloudFrontの組み合わせでNo ‘Access-Control-Allow-Origin’が表示される

CloudFrontでリソースの配信を行っているとき、Android版のChromeだけでCORSのエラーが表示されることがある。

“`
No ‘Access-Control-Allow-Origin’ header is present on the requested resource
“`

CloudFrontにおけるCORSの設定は [CloudFront からの「No Access-Control-Allow-Origin」を解決する](https://aws.amazon.com/jp/premiumsupport/knowledge-center/no-access-control-allow-origin-error/) に書いてある通りなのだが、この設定を行っていてもエラーが起きることがある。

[Cross-origin request from cache failing after regular request is cached.](https://bugs.chromium.org/p/chromium/issues/detail?id=40909

元記事を表示

他人の書いたコードをミニアプリにして魔改造した話。(複数画像投稿・編集)

#はじめに
とある事情により[こちら](https://qiita.com/gakinchoy7/items/ac1d8e64e33c3ddd377b)の記事に大変お世話になったのですが、色々気になるところがあり、
手直しをしていった結果、不具合の修正やリファクタリングができたため記事にまとめてみました。

#動作環境
ruby 2.5.1
rails 5.2.4.2
carrierwave 2.1.0
mini_magick 4.9.5
jquery-rails 4.3.5

#下準備
動作の確認をするためにミニアプリを作りました。
[元記事](https://qiita.com/gakinchoy7/items/ac1d8e64e33c3ddd377b)には省略されていたので、ついでにこれも載せておきます。

**長いので見たい人だけ展開してください**

“`terminal.
$ rails _5.2.4_ new post_images_sample –database=mysql –skip-test –

元記事を表示

ActiveRecordで複数属性を LIKE 検索したい

ActiveRecord は素晴らしいライブラリです。しかし、現実は複雑なデータを取り扱うため、どうしても ActiveRecord 単体では辛くなる時が必ずあります。

この記事を書くきっかけもそんな一幕から始まりました。

## □ 目的

users テーブルの `name`と`email`で LIKE 検索がしたい!

## □ 前提情報( users table )

|column_name|data_type|
|—|—|
|id|integer|
|name|string|
|email|string|
|created_at|datetime|
|updated_at|datetime|

## □ (初めに)単一属性の LIKE 検索

これは、直感的に理解しやすいかと思います。

“`ruby
# email であいまい検索する場合
scope :search_email, ->(params) do
where(“email LIKE ?”, “%#{params}%”)
end

# 検索する属性を動的に変更する場合
scope :search_

元記事を表示

[Rails]Pay.jpを利用したクレジット決済機能実装 ③ ~クレジットカード詳細表示・削除~

## はじめに
例によって、某プログラミングスクールの最終課題である、フリマアプリのクローンサイト作成において、購入機能実装時にPay.jpを利用したので、健忘録としてここに記す。
今回は「クレジットカード詳細表示・削除」の実装に取り掛かります。

## バージョン情報
ruby ‘2.5.1’
Rails ‘5.2.4.2’

## 実装の流れ
1. [実装の準備・APIの導入](https://qiita.com/Shunsuke_i_21/items/19c8326282510ae30eab)
2. [モデルの作成・クレジットカード登録](https://qiita.com/Shunsuke_i_21/items/cd638e6aebba126683f1)
3. クレジットカード詳細表示・削除 ← 今回の実装内容
4. クレジットカード購入(決済)機能

## 前提条件として
* 記載はhaml記法で
* [私の参考にしたrailsにhamlを導入するやり方はこちら、、](https://qiita.com/Mits

元記事を表示

Railsのコントローラー(controller)

##1.コントローラの役割
Action Controllerは、MVCモデルのCに相当します。MVCとは、M(Model)、V(View)、C(Controller)の3つの要素のことであり、リクエストを処理するコントローラがルーティング設定によって指名されると、コントローラはリクエストの意味を理解し、適切な出力を行なうための責任を持ちます。これらの処理はほとんどAction Controllerが行い、しかも吟味された規則を使うので、リクエストの処理は可能な限り素直な方法で行われます。
つまり、コントローラー層では、ブラウザなどから発行されたHTTPリクエストの宛先となっているURLや、HTTPメソッド(GETやPOSTなど)を元に、routes.rbで定義された「そのリクエストを処理する担当箇所」を特定し、どのコントローラー(クラス)の、どのアクション(メソッド)が処理をするのか決定する層、ということです。

1.クライアントからのリクエストをWebサーバを介して受け取るます(routes)

2.ルーティング機能がそのリクエストの処理を行うべきコントローラー(ク

元記事を表示

⑦AWS CLI バージョン2 認証”セキュリティトークンが無効エラー”の解決 (2020.4時点)

#はじめに
当方、スクールでAWS EC2を利用してちょっとデプロイをした程度の初学者です。
自力でDocker環境デプロイしようと、ECRの序盤で盛大に躓きましたので、どなたかの参考になればと、解決までを記事にいたします。
#前提
**・AWSサービス IAMユーザーを作成し、アクセスキー、シークレットアクセスキーをダウンロードしている**
**・AWS Elastic Container Registry (ECR)でリポジトリを作成している**
**・IAMユーザーのポリシー、またはグループポリシー、またはECR側ポリシーでアクセス許可をしている**
**・macOS AWS CLI バージョン 2 のインストール を完了している**
 ターミナルでAWSを操作できるCLI : コマンドラインインターフェイスの略です
 当方は、[macOS グラフィカルインターフェイスを使用したインストール](https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv2-mac.html#cliv2-mac-inst

元記事を表示

gem webmock の README を翻訳しました

# 概要
gem [webmock](https://github.com/bblimke/webmock) の [README](https://github.com/bblimke/webmock/blob/master/README.md) を翻訳しました。

– 翻訳について
– 翻訳サービス [Deepl](https://www.deepl.com/translator) と [Goole翻訳](https://translate.google.co.jp/) の訳文を参考にしている箇所があります。
– 翻訳対象の[コミットハッシュ](https://github.com/bblimke/webmock/commit/904aa9806a91fb292a142dc2783ff762eacca0d8)
– 非公式の翻訳です。
– 訳文がおかしい箇所があったら指摘をもらえると幸いです。

– ライセンスについて
– [webmock のライセンス](https://github.com/bblimke/webmock/blob/maste

元記事を表示

Ruby on Rails – MVCモデルとRESTアーキテクチャ

#はじめに
Ruby on Rails チュートリアルを実施しています。
チュートリアル第2章の学びとして、MVCモデルとRESTアーキテクチャを自分なりに解釈し、まとめました。

#MVCモデル
##MVCとは
>MVCとは、ソフトウェアの設計モデルの一つで、機能を「Model」(モデル)、「View」(ビュー)、「Controller」(コントローラ)の三つの役割に分離して実装し、それらが連携して処理を進める方式。
– IT用語辞典 e-Words より引用

多くのWebアプリケーション設計に用いられている手法です。
Ruby on RailsでもMVCモデルをベースとした作りになっています。

##Ruby on RailsにおけるMVCの役割
#### ● Model
Controllerの命令を受け、データに関する処理を行い、結果をControllerへ返却します。
処理はデータベースとのやり取り、データ加工、データチェック等です。

#### ● View
Controllerの命令を受け、ブラウザに表示するHTMLを生成し、Controllerへ返却します。
表示に必要

元記事を表示

Docker備忘録

自分の備忘録用です:santa_tone1:

#MacOSでのDockerインストール手順
[Docker公式サイト](https://hub.docker.com/editions/community/docker-ce-desktop-mac)からSignUpをクリックしてアカウント作成
(DockerHubとは、世界中の人が作ったイメージが公開されているWebサービス。 自分で作ったイメージを公開することもできる。)

スクリーンショット 2020-04-19 13.52.18.png

トップページからGet started with Docker Desktopをクリック
スクリーンショット 2020-04-19 13.54.53.pngAurelia+Railsのアプリケーション作成

# はじめに
この記事では、
フロントエンドにAurelia、バックエンドにRailsを使用したアプリケーションを作成します。

バックエンドから取得した情報を、画面に表示します。
とりあえずローカル環境で動くところまでです。

# 環境:
||バージョン|
|:—————–|—————–:|
|macOS|10.15.4|
|Ruby|2.6.3|
|Rails|6.2.0|
|node|v13.10.1|
|npm|6.14.4|
|aurelia-cli|v1.3.1|

# 事前準備
– ローカルで `aurelia-cli` をインストール
インストール方法はこちらの記事を参照ください。
– [Aurelia Todoアプリの作成 – Qiita](https://qiita.com/murakami-mm/items/f03c706889c83df0ea2f#%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E5%AE%9F%E8%A1%8C%E9%A0%86)

# プロジェクト作成

## デ

元記事を表示

RailsでTypeError can’t quote Rack::Session::SessionIdが起きる場合の解決策

`session.id`をそのまま使ってクエリを実行すると、`TypeError can’t quote Rack::Session::SessionId`が起きる。

“`
# Bad
user = User.find_by(session_id: session.id)
# => TypeError can’t quote Rack::Session::SessionId

# Good
user = User.find_by(session_id: session.id.to_s)
# Success!
“`

上記のコードは`Rails 5.2.4.2`で実行している。認証情報を扱うgemでこの例外が起きることもあるので、Railsのバージョンによって`session.id`の実装が異なるのかもしれない。

##### 参考リンク

[ruby on rails – TypeError – can’t quote Rack::Session::SessionId – Stack Overflow](https://stackoverflow.com/questions/60

元記事を表示

heroku run rails db:migrateでエラーが出た話

Railsチュートリアルの第6章「6.4最後に」の節でエラーが出たので勉強として書き記しておくことにしました。

###やりたいこと
本番環境でUserモデルを使うために、heroku runコマンドを使ってHeroku上にマイグレーションを走らせたい。

###エラー直前にやったこと

“`
$ heroku run rails db:migrate
“`

###エラー内容

“`
bash: heroku: command not found
“`

###エラー後にしたこと
“`
$ sudo yum -y update
$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
$ export NVM_DIR=”/home/ec2-user/.nvm”
$ [ -s “$NVM_DIR/nvm.sh” ] && \. “$NVM_DIR/nvm.sh”
$ nvm install node –reinstall-packages-from=node
$

元記事を表示

初心者がRubyで自作したLINE botを公開するまで

#目標
自作LINE bot公開
環境構築からゼロからやります
基本的な用語の説明も簡単に把握しよう

# 手段
Ruby on rails
LINE developers
heroku:クラウドプラットフォーム
ngrok:ローカルのwebサーバを外部公開できる
Mac

# 作った人のステータス
Ruby? Rails? なにそれ,おいしいの?

# 作成
## 0. まず開発環境を作る
ほぼこちらを参考にしました.感謝.
[Ruby初学者のRuby On Rails 環境構築【Mac】](https://qiita.com/TAByasu/items/47c6cfbeeafad39eda07)

### マシンスペック

– MacBook Air(mid-2013)
– macOS Catalina 10.15.4

#### Install Homebrew

Homebrewとは(Wikipediaより)

>Homebrewは、macOSオペレーティングシステム上のパッケージ管理システムのひとつである。

Homebrewがインストールされてるか確認

“`c

元記事を表示

【初心者向け】Railsでi18nの辞書ファイルをダウンロードする

Railsのエラーメッセージを日本語にする際に、手っ取り早く、[Githubのrails-I18nのリポジトリ](https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/ja.yml)からDLしたかったので、手順をメモします。

### 翻訳ファイルのダウンロード
アプリのRootディレクトリにて、以下のコマンドを実行

“`:コンソール
wget https://raw.githubusercontent.com/svenfuchs/rails-i18n/master/rails/locale/ja.yml -P config/locales
“`

`wget` は引数に記載したURLからファイルを**カレントディレクトリ**にDLするコマンド。

`-P` オプションでDLするディレクトリを指定します。
これで、翻訳ファイル`config/locales/ja.yml` が作成されます。

### デフォルトの言語を日本語にする
Railsのデフォルトの言語を日本語にすると、エラーメッセージ等で翻訳言

元記事を表示

【初心者向け】テキストをtメソッドで記載して翻訳ファイルをあてる(ちょっとした変更にも強いビューの作成)

テキスト情報は顧客の要望等により頻繁に変更が入るので、翻訳ファイル等で管理しておくと便利です。翻訳ファイルの導入方法はこちらに掲載してありますので、

[【初心者向け】Railsでi18nの辞書ファイルをダウンロードする](https://qiita.com/tanutanu/items/43891e5441c285c6cced)

ここでは、翻訳ファイルを実際にビューでどのように使うかを記載したいと思います。

### 基本の使い方
例えば、以下のような翻訳ファイルがあるとします。

“`ruby:config/locales/ja.yml
ja:
app_name:
page:
title:
books: “書籍一覧ページ”
“`

この時、ビューでは**tメソッド**を用いて翻訳情報を呼び出すことができます。

“`ruby:例)views/booke/index.html.hamlなど
%h2= t(“app_name.page.title.books”)
“`
上記の記述で、ビューではこのように表示されます。
![ja.png

元記事を表示

OTHERカテゴリの最新記事