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

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

駆け出す前に一歩立ち止まって、ユーザー登録機能におけるDB設計を考えよう!

#記事内容
メルカリクローンサイトのユーザー登録機能を実装しました。
前回の記事でDB設計について記述しましたが、ユーザー機能の実装中にDB設計との変更点がありましたので、変更内容と変更理由を記載します。
駆け出しエンジニアは「とりあえず進みながら修正していこう!」とういうマインド」で開発がスタートすると思います。自分たちのチームもそうでした。
読んでくれた方がBD設計で手戻りがないようになればと思います。DB設計の修正が結構やっかいだったので…
[前回の記事はこちら](https://qiita.com/oitakazuki/items/19e5ba2396624bae1057)

この記事DB設計をした時点で考えていたこと。
`ユーザー・アイテムモデルに大量のカラムができるから、括れるものは別テーブルを作成し1体1の関係でリレーションする。(テーブルにカラムが多すぎると不便になりそう・・・)`

#DB設計変更箇所
今回変更した箇所は以下の通りです。
変更しなければ実装できないというわけではないと思いますが、実装難易度(検索してヒットするか)、分かりやすさを考慮しました。

`

元記事を表示

Rails 6 Grapeを利用したAPI作成、Swaggerでの確認

# RoRでのAPI作成メモ 
ruby 2.7.0 & Rails 6
Rails 5.x 系の資源を利用する例です。
https://qiita.com/katafuchix/items/8a96e2fa9ddc8bc83545

## プロジェクト作成
“`
$ mkdir api_sample
$ cd api_sample
$ bundle init
“`
Gemfile編集

“`ruby
# frozen_string_literal: true

source “https://rubygems.org”

git_source(:github) {|repo_name| “https://github.com/#{repo_name}” }

gem ‘rails’
“`

インストール
*MySQLを利用する例

“`
$ bundle install –path vendor/bundle
$ bundle exec rails new . –skip-action-mailer –skip-active-storage –skip-actio

元記事を表示

【随時更新】Railsでたまに見返したいメモ集

個人的に見返したい資料のメモ書きです。

##HTTPメソッド一覧
| HTTPメソッド | 使用するリクエスト |
|:———–|—————————:|
| GET | ページを表示する操作のみを行う時 |
| POST | データを登録する操作をする時 |
| PUT | データを変更する操作をする時 |
| DELETE | データを削除する操作を行う時 |
##アクション名一覧

| アクション名 | 対応するリクエスト |
|:————-|—————–:|
| index | 一覧表示ページを表示 |
| new | 新規投稿ページを表示 |
| create | データの投稿 |
| show | 個別詳細ページを表示 |
| update | データの編集 |
| dest

元記事を表示

Railsチュートリアルメモ – 第11章

(メモの目次記事はこちら)[https://qiita.com/yokohama4580/items/dedfd5510080273dc2a0]

(公式Railsチュートリアル第11章へのリンク)[https://railstutorial.jp/chapters/account_activation?version=5.1#cha-account_activation]

## サマリ
– メールの送信とアカウント有効化機能の実装
– メタプログラミング
– SendGridを利用した本番環境でのメール送信

## ポイント
– `rails generate mailer`でメーラーの雛形を作成できる
– e.g. `rails generate mailer UserMailer account_activation password_reset`
– 生成されるHTML/textメーラーのレイアウトは`app/views/layouts`で定義されている
– コントローラー同様、メーラーの中で作成したインスタンス変数はテンプレートの中で使用することがで

元記事を表示

Rails + Vue.js + AjaxでCRUDのサンプルプロジェクト [Hello World]

Vue.js初心者が公式サイトで基礎を学んだ後に作るVue.js + AjaxによるCRUD(作成/読み込み/更新/削除)のサンプルプロジェクトです。

![vue_crud_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597258/f32c0ce7-f192-5729-abca-3e27b8a23dd9.png)

動作確認はChrome、FireFox、Microsoft Edge、IE11です。恐らくマックさんのブラウザでも動作するはずです。

## DEMO
https://www.petitmonte.com/rails-demo/vue_crud

## ソース一式

元記事を表示

Rails~~投稿とユーザーを紐付けする

#テーブルに新しくカラムを追加する
まずターミナルからマイグレーションファイルを作成。データベースへ反映させる。
##ターミナル
“`
rails g migration add_user_id_to_posts
※マイグレーションを変更
rails db:migrate
“`
##マイグレーションファイルの中身
“`
class AddUserIdToPosts
def change
add_column :posts, :user_id, :integer
end
end
“`
##バリデーションの設定
“`
class Post

元記事を表示

Railsでフォーム作成時にHTMLで書いたコードをform_tagに変換する方法

Ruby on Railsでヘルパーメソッドを使って、HTMLのフォームをform_tagに書き換える方法を説明します。

##ヘルパーメソッドとは
ある動作を処理する場合にメソッド化して扱えるようにRailsにあらかじめ組み込まれた機能のこと。使うことでビューをシンプルに美しく書くことができるといったメリットがあリます。

##form_tagメソッドとは
フォームを実装するためのヘルパーメソッドです。

今回は以下のコードを書き換えます。

“`erb:sample.html.erb



“`

これをform_tagに書き換えると

“`erb:sample.html.erb
<%= form_tag('/posts', method: :post) do %>

元記事を表示

EC2にapache + rails環境を構築する

#参考サイト
es2の設定
・[(デプロイ編①)世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまで](https://qiita.com/naoki_mochizuki/items/814e0979217b1a25aa3e)
・[Linuxグループ作成方法!groupaddで意外とすぐできる](https://eng-entrance.com/linux-user-create-group)
・[usermodコマンドについて詳しくまとめました 【Linuxコマンド集】](https://eng-entrance.com/linux-command-usermod)

apacheインストール
・[Red Hat](https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/system_administrators_guide/sect-managing_services_with_systemd-services)

passengerインストール
・[phu

元記事を表示

マイクロポストにコメント機能をつける

#はじめに
ご訪問いただきありがとうございます。初めての投稿ですが学んだことを備忘録的にまとめようと思い記事にしてみました。レベル的にはrailsチュートリアルを終えたくらいのレベルです。もし間違えているところ等あればアドバイスいただけると幸いです。

###作るもの
今回は投稿されたマイクロポストに自由にコメントできるような機能を付けます。(題材は自分のポートフォリオサイトです。尚、すでにUserテーブルとMicropostテーブルは作成済みです。)

###対象読者
railsチュートリアルに機能を追加したい等自分と同じ位のレベルの人を対象としています。

#作成の流れ
まず初めにコメント機能を追加するまでの流れです。
1.Commentモデルの作成、変更
2.モデルの関連付け、バリデーションの設定
3.Commentsコントローラーの作成、ルーディングの設定
4.対応するビューの作成
5.コントローラのアクションの作成

#1.Commentsモデルの作成
まずデータベースとやりとりを行う、Commentモデルの作成を行います。
ちなみにテーブルの中身はこんな形です。

|カラム

元記事を表示

Mailer viewでヘルパーメソッドを使用する

#Mailer viewでヘルパーを使いたい

###郵便番号にハイフンをいれてくれるメソッド

“`application_helper.rb
def format_zipcode_include_hyphen(zipcode)
zipcode.include?(‘-‘) ? zipcode : zipcode.insert(3,’-‘)
end
“`

mailer viewでいきなり使用するとエラーになった。

###application_mailer.rb
“`application_mailer.rb
class ApplicationMailer < ActionMailer::Base add_template_helper(ApplicationHelper) end ``` と記述する ###view ```mailer.ftml.slim p 〒#{format_zipcode_include_hyphen(zipcode)} ``` でうまくいきました。

元記事を表示

Railsにおけるセッション管理とCookieについて

セッション管理とCookieの働きについてあやふやだったのでまとめてみました

### HTTP通信
– クライアントとサーバ間は**HTTP**というルールでやり取りをする
– クライアントからサーバに対して「リクエスト」が送られる
– リクエスト = 「要求」(このURLの情報ちょうだい、とか)
– レスポンス = 「返答」(情報はこれだよ、とか)
![スクリーンショット 2020-03-14 14.52.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159704/b1932d11-8aa3-50ae-293d-2bf07bf0eb72.png)

### HTTPはステートレス
– ステートレス=記憶力がない
– たとえばyahooにアクセスするときには、クライアントからサーバへ「yahooの情報ちょうだい」とリクエストを送るが、その直後には送ったことすら覚えていない
– yahooの情報がレスポンスで送られてきて画面表示をしたとしても、送られてきたこと自体を覚えていない

元記事を表示

『非同期でのメッセージ投稿』が理解できる最低限のRailsアプリを丁寧に作る(Ajax苦手の自分とお別れしよう)

# この記事の基本的な方針
Ajaxはなんだか難しい!は、勘違いです。一歩一歩きちんと進んでいけば、普通のことだと思えてくるでしょう。
ここではAjax非同期通信を理解するためだけの簡易なアプリを一つ丁寧に作成して、Ajax学習の基礎を完了することを目的としています。

この記事は、以下の「登録画面」「ログイン画面」「TOP画面」の3画面の簡単なアプリを元に拡張していきます
【TOP画面(ログイン前)】     【TOP画面(ログイン後)】
a0.png a9.pngコーディング未経験のPO/PdMのためのRails on Dockerハンズオン vol.11 – Test coding –

# はじめに
第11回目ですね。
前回はテストを自動化するためにRSpecSeleniumCapybaraなどを導入しましたね。

今日は今まで作ってきたアプリケーションに対してテストコードをコーディングしていきます。
本当はアプリをコーディングする前にテストをコーディングしてRedのフェーズにするべきなのですが、
まぁ最初なのでご愛嬌ということでGreenの状態から始めましょう。

# 前回のソースコード
前回のソースコードはこちらに格納してます。今回のハンズオンからやりたい場合はこちらからダウンロードしてください。

– https://github.com/at946/rails_on_docker_handson/tree/vol.10

# どういうふうにテストコード書いてくの?
ここは人によってやりやすいようにでいいと思うのですが、このハンズオンでは基本的には作りたい機能(ユーザーストーリー)ごとにテストファイルを分けて記述していきます。
例えば、今までだと「サインアップ」とか「サインイン」とかそうい

元記事を表示

js→railsへのajax通信で404エラーを出しまくった話。

#はじめに
はい皆の衆よくお聞き
初心者様による
初心者でもできるエラー殺し講座を始める

**よく聞かないと死にます**

前回、[ancestryとjQueryで多階層型カテゴリの入力フォームを段階的に表示させてみた](https://qiita.com/0thefool/items/6de6bcca6dc4e4f174c1)を投稿するためにサンプルを作ったのですが、さすが初心者。
サンプルを作り終える間に多大なエラーを出しては修正し、修正しては出ししていました。
今回はそのエラーから「404 NotFound」を切り出して、どのように解決していったかを記事にしていきます。

##今回取り扱うエラーについて
**404 (Not Found)**
HTTP 404、またはエラーメッセージ Not Found(「未検出」「見つかりません」の意)は、HTTPステータスコードの一つ。 クライアントがサーバに接続できたものの、クライアントの要求に該当するもの (ウェブページ等) をサーバが見つけられなかったことを示すもの。(wikipediaより抜粋)

##第一の404 (Not Fou

元記事を表示

営業マンが独学でSNSをリリースし、スクールに「来なくていいよ」と言われた話

ITとは無縁の製造業で営業をしながら、友人とRailsアプリを約半年でリリースしました。

[お悩み相談SNS “Probless”](https://prob-less.com/)
**機能**:ログイン/投稿/タグ付け/2層コメント/リアルタイムチャット/いいね/通知/検索/フィード/メール認証/理論削除/ + インフラ(AWS/自動デプロイ)
**使用技術**:Ruby on Rails/PostgreSQL/Action Cable/Elastic Search/Devise 認証/acts-as-taggable-on(タグ付け)/無限スクロール/Bootstrap/AWS/GitHub/独自ドメイン/Circle CI/Nginx/Https 認証

###結論 ~学んだこと~
・誰かの役に立つという確信をミッションとして持っておくべき
・独学でもWebアプリを作ることができる
・スクールに通わない道もある

ちなみに過去にも独学でiOSアプリをリリースしたことがあり、今回は二つ目のリリースとなります。
[営業マンが独学でiOSアプリをリリースし、レビュー4.

元記事を表示

AWS Cloud9上でPostgreSQLをソースからインストール

### 概要
 AWS Cloud9 上でpostgreqlとdeviseを使ってRailsアプリを開発をしようとした際に、
postgresqlのバージョンが古いと怒られたのでやってみたことをメモ。

– 環境
– AWS Cloud9
– Amazon Linux AMI release 2018.03
– postgre
– postgres (PostgreSQL) __9.2__.24

### ソースからコンパイル
下記を順に実行
一応コンパイラからインストール

“`
$ sudo yum install -y gcc readline-devel zlib-devel
$ wget https://ftp.postgresql.org/pub/source/v10.4/postgresql-10.4.tar.gz
$ tar -xf postgresql-10.4.tar.gz
$ cd postgresql-10.4
$ ./configure
$ make -C src/bin
“`
ここでエラーが出るの

元記事を表示

Rails|generateコマンドで生成されるファイルに制限をかける(config.generatorsの設定)

##はじめに

generateコマンドっていろんなファイルを作成してくれるけど、「helperファイルの自動生成は必要ないのになー」って時などには、かえって煩わしく感じますよね。

そこで今回は、`config/application.rb`内の設定によって、generate コマンドで生成されるファイルに制限をかけます。(※スキップオプションを付ける方法もあるけど省略)

##まずはrails generation時の挙動を確認

ターミナルで`rails generation(rails gに省略可)`を行うと、色々なファイルが自動生成される。

“`
> rails g controller user show
Running via Spring preloader in process
create  app/controllers/user_controller.rb
route  get ‘user/show’
invoke  erb
create app/views/user

元記事を表示

『2ページ遷移して会員登録』できる最低限のRailsアプリを丁寧に作る(deviseをウィザード形式に拡張)

# この記事の基本的な方針
deviseで実装したログイン機能は特にカスタマイズしなければ、1ページでEmailとパスワードの2項目を入力して登録完了です。
これを2ページに拡張し、1ページ目にEmailとパスワードに加えニックネームを、2ページ目でケータイ番号の入力を求めます。

この記事は、以下の「登録画面」「ログイン画面」「TOP画面」の3画面の簡単なアプリを元に拡張していきます。

【TOP画面(ログイン前)】     【TOP画面(ログイン後)】
a0.png a9.png既存の開発環境にDockerを導入する

### はじめに
今まではAWSのcloud9でrailsアプリを開発していましたが、実際の開発現場で使われているというDockerを開発環境に導入しようと思います。

※導入する際には、以下の記事を参考にさせていただきました。
[丁寧すぎるDocker-composeによるrails5 + MySQL on Dockerの環境構築(Docker for Mac)](https://qiita.com/azul915/items/5b7063cbc80192343fc0)

### 環境
Ruby 2.5.3
Rails 5.2.4
MySQL 5.7
MacBook Pro

#### 1 自分のアプリのディレクトリ直下にDockerfileを作成する

“`php:Dockerfile
FROM ruby:2.5.3
RUN apt-get update -qq && apt-get install -y vim nodejs default-mysql-client
COPY . /fishingshares
ENV APP_HOME /fishingshares
WORKD

元記事を表示

【Rails】 関連モデル先の条件で検索する方法(内部結合)

# 関連モデル先の条件で検索する方法
すでにたくさんの記事が出ていますが、自分がよく使うものを忘れないようにメモしました。

#

“`ruby
User.joins(:posts).includes(:posts).where(posts: { post_name: ‘test1’ })
“`

# 参考
* Rails における内部結合、外部結合まとめ
* https://qiita.com/yuyasat/items/c2ad37b5a24a58ee3d30

元記事を表示

OTHERカテゴリの最新記事