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

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

ハッシュ アウトプット

ハッシュとは中身の値 バリュー をそれに対応する名前 キー で管理することができます。配列と同じように複数の値を持つことができる。

“`ruby
変数 = {}
“`

で生成でき

“`ruby
変数 = {キー1 => バリュー1,キー2 => バリュー2}
“`

シンボルを使用すると

“`ruby
変数 = {キー1 :バリュー1,キー2 :バリュー2}
“`

となり、上記も下記も出力すると同じものが出力される。

ハッシュに値を追加するには

“`ruby
変数 = {}
変数[追加したいキー] = バリュー
“`

で追加できる。

例えば

“`ruby
men = {name :Taro,age :28}
“`

に身長(キー) 179(バリュー)を追加したければ

“`ruby
men[height] = 179
“`

となる。

ハッシュを取得したい場合は
ハッシュ[取得したいキー]で取得できる。配列では添字だったがハッシュはキー(名前)でバリュー(値)を管理しているのでキーを指定する。
menのageを取得したい場合は

“`ru

元記事を表示

保存済みのマイグレーションファイルを編集する方法

こんにちは!テックアカデミーのWebアプリコースを受講している駆け出し高校生エンジニアの安田駿介です。

今回は、「保存済みのマイグレーションファイルを編集する方法」というテーマで解説していきます。

# Railsにおけるマイグレーションファイルとは
Rubyで書かれた テーブルの設計図 のことです。
テーブルの設計図とは カラム や データ型 の定義が書かれた状態のことを指します。

マイグレーションファイルは保存したあとで編集するときには、これから解説する手順を踏まなければいけません。

# 保存済みのマイグレーションファイルを編集する手順
1.rails db:migrate:status
2.rails db:rollback
3.rails db:migrate:status
4.マイグレーションファイルを編集
5.rails db:migrate

という手順です。

# 解説

1と3のrails db:migrate:statusは、マイグレーションファイルの状態を確認するコードです。

2のrails db:rollbackは、1で状態を確認したときに、一番下のu

元記事を表示

配列 アウトプット

配列とは一つの変数で複数の値を持つことができる値で、中のデータは要素と呼ぶ。要素は順番をもっていて配列に入ると自動的に与えられる。
変数 = [値] で定義できる。
後から要素を追加することもでき
変数 << 値 で追加できる。 << これを配列演算子という。 要素には添字という番号が割り振られており、 ```ruby animals = [“サル”,”イヌ”,”キジ”] ``` では、サルが0、イヌが1、キジが2、というふうになっている。 配列の要素を取得した場合は ```ruby 配列[添字] ``` で取得できる。animalsでイヌを取得したい場合は ```ruby animals[1] ``` となる。 ```ruby 変数 = 配列[添字] ``` で配列の要素を取得し変数に代入することができる。 配列の値を変えたい場合は ```ruby 配列[添字] = 値 ``` で変更できる。animalsのキジをハトに変えたい場合は ```ruby animals[2] = “ハト” ``` となる。 lengthメソッドを使うと配列の要素の数を数え

元記事を表示

railsチュートリアル第6章 ユーザーがセキュアなパスワードを持っている

###ユーザーがセキュアなパスワードを持っている
Userモデルに“`password_digest“`属性を追加し、Gemfileにbcryptを追加したことで、ようやくUserモデル内で“`has_secure_password“`が使えるようになりました。

####Userモデルにhas_secure_passwordを追加する

“`rb
class User < ApplicationRecord before_save { email.downcase! } # データベースに保存する前に処理をする。 # 入力されたメールアドレスを小文字にする。 validates :name, presence: true, length: { maximum: 50 } #属性はname,属性の存在を検証、 最大50字まで VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i validates :email, presence: true, length: { maximum: 2

元記事を表示

railsチュートリアル第6章 パスワードの最小文字数

###パスワードの最小文字数
パスワードを簡単に当てられないようにするために、パスワードの“`最小文字数を設定“`しておくことは一般に実用的です。
Railsでパスワードの長さを設定する方法はたくさんありますが、今回は簡潔にパスワードが“`空でない“`ことと“`最小文字数(6文字)“`の2つを設定しましょう。
パスワードの長さが6文字以上であることを検証するテストを示します。

####パスワードの最小文字数をテストする

“`rb
require ‘test_helper’

class UserTest < ActiveSupport::TestCase def setup @user = User.new(name: "Example User", email: "user@example.com", password: "foobar", password_confirmation: "foobar") end . . . test "password should be present (nonbla

元記事を表示

保存済みのマイグレーションファイル削除してしまったときの解決法

こんにちは!テックアカデミーのWebアプリコースでプログラミングを学んでいる駆け出し高校生エンジニアの安田駿介です。

今回は「Railsで保存済みのマイグレーションファイル削除してしまったときの解決法」について紹介します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1903726/fb68c064-13db-b148-764e-53678586aa1e.png)

このように、保存(up)しているファイルを削除してしまったときの解決法を書いていきます。

ちなみに、マイグレファイルの確認するには、rials db:migrate:statusを実行します。

# マイグレーションファイルを削除してしまったときの解決法

rails db:migrate:reset

をターミナルで実行してください。

# 実行結果

すると、先程のマイグレファイルがこのようになります。

![image.png](https://qiita-image-store.s3.ap-northeast

元記事を表示

railsのjoinsメソッドは何をやっているのか?

皆様お久しぶりです、プレイライフの熊崎です!
最近体調を崩すことが多く、アウトプットができておりませんでした。
体調を崩していた私が言うのもどうかとは思いますが、季節の変わり目ですので体調管理には気をつけましょう!

というわけで、久々のアウトプットを行っていきたいと思います。

## joinsメソッド
内部結合を行うメソッド。

## 内部結合

### 結合とは?
> SQLで、このような複数のテーブルに格納されたデータを集めた表を作る処理を「結合」と呼びます。
ref: https://style.potepan.com/articles/17010.html

### 内部結合とは?
結合にもいくつか種類があり、その中の一部。

>INNER JOINは、結合するテーブルのデータのうち、条件に指定したカラムの値が一致するデータのみを結合します。
ref: https://style.potepan.com/articles/17010.html

例: 書籍(books)テーブルと著者(authors)テーブルを内部結合する。

#### booksテーブル
| id |

元記事を表示

devise_token_authの認証Headersのサンプルについて

#devise_token_authとは
新規登録やログイン、ログアウトなどを実装するときに使うgemです。
deviseというgemを使えば上記のようなユーザーの認証機能を実装できます。

●公式ドキュメントです。
https://devise-token-auth.gitbook.io/devise-token-auth/

#Headersとは
本題ですがdevise_token_authの中でもHeadersというものがあります。
このheaderにアプリの操作などをするときにユーザーの認証情報を送り、
アプリを動かすことができます。
Headersはpostmanの中でも確認できます。
https://www.postman.com/

#headerの認証サンプル
headersの中には認証サンプルがあります。
公式ドキュメントに載っているものを紹介します。

●***access-token***
リクエストごとに“`認証パスワードとして使用“`されます。
この値のハッシュなどはデータベースに保管されるみたいです。

⚫︎***client***
それぞれ違うク

元記事を表示

【Ruby】奇数か偶数かを判断するメソッド

– Inetger#odd?は奇数であればtrue、そうでなければfalseを返します。
– Inetger#even?は偶数であればtrue、そうでなければfalseを返します。

### 奇数かどうか
“`
5.odd? => true
10.odd? => false
“`

### 偶数かどうか
“`
10.even? => true
5.even? => false
“`

元記事を表示

[Rails] migrationファイルが無く、RDBMSに変更が残ってしまった時の解消方法

ブランチを移ってmigrationしたが、それを戻さずに違うブランチに移ってしまい、ファイルが行方不明になってしまった下記のような場合の解決法。

“`
$ rake db:migrate:status

up 20210709062913 ********** NO FILE **********
“`

「rails migration no file」と検索するとマイグレーション管理のtableに変更を入れるだけ記事がいくつかヒットするが、本質的解決ではない。マイグレーションの冪等性を保つためにRDBMSに残っている変更も同時に消すことが望ましい。

https://qiita.com/sakatan_1/items/9bf321f81d3b84042694
https://note.com/yofupro/n/nd2ed39123066

## 解決策
前提:gitで管理されているリポジトリであること

### 手順
1. gitのコミットに残っていないか検索する
1. 検索結果からcherry-pickなり、コピペなりで、同名のmigrationファ

元記事を表示

deviseのメールアドレスのバリデーションを変更する

## はじめに
開発ですぐに忘れそうなことを、簡単に再度調べられるようにするための備忘録です。

## やりたいこと
ログイン認証関連のgem、[devise](https://github.com/heartcombo/devise)の
メールアドレスのバリデーションを強化したい。

## 背景
deviseには、メールアドレスとパスワードのバリデーションが簡単に設定できる「validatable」モジュールが実装されているが、メールアドレスのバリデーションがゆるい。

例)
– exam$$ple@gmail.com のような記号が含まれていても通ってしまう
– example@aaaaa のような不正なドメインでも通ってしまう

しかし、パスワードの確認やメールアドレスの一意性は、便利なので、そのままにしたかった。

[参考](https://github.com/heartcombo/devise/blob/master/lib/devise/models/validatable.rb)

## 試した方法

modelに、メールアドレスのフォーマットを指定した。

“`r

元記事を表示

【Rails】リーダブルなroute.rb

リーダブルなroute.rbの書き方

CRUDなbookコントローラと、photoコントローラ
独自アクションがそれぞれ一つづつある場合。

以下のように、コントローラ毎に分けることで、
開発者にとって読みやすくする。

“` routes.rb
Rails.application.routes.draw do
controller :books do
resources :books
scope path: “hoge”
get “subscribe”, action: :subscribe
end
end
controller :photos do
resources :photos
scope path: “hoge”
get “unsubscribe”, action: :unsubscribe
end
end
end
“`

元記事を表示

ストロングパラメーターアウトプット

ストロングパラメーターとはデータベースが全てのパラメーターを受け取ることができる状態にしておくと、意図しないデーターベースの読み書きが起こってしまうことがありそれを防ぐためのもの。悪意あるパラメーターからによるデータの改竄などのセキュリティの欠陥を防ぎ、ユーザーを守ることにつながる。
ストロングパラメーターを使って保存するパラメーターに制限をかけることは重要。
ストロングパラメーターにはrequireメソッドとpermitメソッドがある。

requireメソッドは送信されたパラメーターを持つparamsが使用できるメソッド。

“`ruby
params.require(:対応したモデル名)
“`

で定義できる。ストロングパラメーターとして使用する場合は主にモデル名を指定する。
これにより意図しないパラメーターをparamsが受け取った場合。エラーを返すことができ、原因特定のためにユーザーにエラーを示すことができる。
requireメソッドで必要なパラメーターを取得できるようになったが、さらにパラメーターを絞り込み、カラムに保存したい情報を指定することがpermitメソッドで

元記事を表示

文系大学生がWebアプリを作りました。

## Webアプリを作った経緯
そもそも何故、文系の私がプログラミングを始めたのか。

私は「そろそろ自分の就職先について考えなければ、、、」と思い、何系が良いかを考えると、ふとIT企業が浮かびました。
「可能性が無限だな~」と思ったからです。(笑)

安直な考えで、とりあえずIT企業志望ということにしました。

そこで初めて「ITって何?」と思い、ネットで調べましたが、具体的なことはあまりイメージできず、、、

という訳で、実際にITっぽい事をやってみようと思い「ITと言えばプログラミングだ!」と、即プログラミングスクールに入りました。
そして、そのプログラミングスクールでは最終課題としてオリジナルのWebアプリを作るというのがあったため、私も作ってみました。

## 作ったWebアプリ
↓これです。
https://fingout.herokuapp.com

FingOut(フィンガウト)と言います。

私はもともと「街歩き」が趣味で、色々な街に行き、遊びスポットを開拓するのが好きでした。
そこから転じて、おすすめのカフェやスポットを組み合わせて、オリジナルの遊びプランを投稿でき

元記事を表示

logger.debugの使い方

##環境
Rails 6.1.3.2
ruby 2.7.1

##使い方
1. Controllerなどオブジェクトの中身を見たい箇所に下記を書く
(1行目と3行目はログを出力したときの見やすさのために書いた)
配列やハッシュを扱うときはinspectメソッドを使うとより中身が見やすい

“`rails
logger.debug ‘——————-‘
logger.debug (中身を見たいオブジェクト).inspect
logger.debug ‘——————-‘
“`

2. ターミナルなどで下記コマンドを叩く

“`ターミナル
$ tail -f development.log
“`

##参考

https://railsguides.jp/debugging_rails_applications.html#inspect

元記事を表示

Ruby on Rails 新規登録機能を実装する

#一覧画面に新規登録リンクを追加する

一覧画面(app/views/tasks/index.html.slim)に、新規画面に移動するためのリンクを設置する

“`:リンクの書き方
<%= link_to "表示したい文字列", root_path名 %>
<%= link_to ("表示したい文字列", "URL") %>
“`

“`:app/views/tasks/index.html.slim
h1 タスク一覧
#btnとbtn-primaryという2つのcssクラスを与えることでbootstrapがリンクをボタンのような外見にしてくれる。
#新規画面に移動するためのリンク
= link_to ‘新規登録’, new_task_path, class: ‘btn btn-primary’
↑                          ↑                                             ↑
                            ①                         

元記事を表示

パラメーターとparams アウトプット

パラメーターとはリクエストに含まれる外部からくるデータのこと。URLに含まれるものやフォーム入力から渡されるパラメーターがある。
パラメーターはコントローラーにたどり着くとparamsというハッシュのような構造のものに格納される。

paramsとは送られてきたパラメーターをハッシュのような構造で格納したもの。フォーム入力でパラメーターが送られてきた場合

フォームで入力(入力されたものがパラメーター) → コントローラでパラメーターがparamsに格納され、パラメーターを取得するカラムを指定する → モデル → データベース内のテーブルへ

という流れでパラメーターをparamsに入れてデータベースへ運んでいく。
例えば、HTTPメソッドがpost、URL名がposts、コントローラ名がposts、アクションがcreateの場合ルーティングの設定は

“`ruby
post ‘posts’, to: ‘posts#create’
“`

★createは保存のための newアクション→情報の記述→saveアクション の流れを引数を利用することで実行できるメソッドで モデル.cr

元記事を表示

オーケストラ専用出欠サイトの制作

## 目次
– 概要
– 機能説明
– 改善点
– あとがき

## 概要
DMM WEBCAMPの卒業制作として作った、オーケストラのための出欠管理サイト「Otoderu」についてお話させてください。
私が15年超、音楽団体に関わっている中で出欠連絡というシステムの不完全さが運営側、団員双方の負担になっていると思ったことが制作の動機です。
半ば諦められている、「面倒」「忘れてた」に対しての問題解決ツールとして提案したいものです。
サイト:[Otoderu](https://otoderu.com/)
GitHub:[コチラ](https://github.com/sagittarius3008/Otoderu)
[頂いているレビュー](https://docs.google.com/spreadsheets/d/1ncuHkSPa2KOA9w-8PAqZyYjZSPjEKQVvLZSY_Tatpx4/edit?usp=sharing)

### 出欠連絡の重要性について
オーケストラでは出席者により練習する曲、順番を決める必要があり、出欠の把握が重要です。
その理由は、
**1時間の

元記事を表示

#0.5 アプリ作成→GitHubへのPush

#はじめに
前回の[開発環境の準備](https://qiita.com/snow100/items/eabcee3d7aa7beeb0f98)に引き続き、
アプリ作成からGitHubへのPushの流れを記事にして行きたいと思います。

#目次
1.アプリ作成
2.リモートリポジトリ作成
3.リモートリポジトリへPush

#1.アプリ作成
“`
username:~/environment $ rails new snow-review
“`
rails new アプリ名でアプリケーションのひな形を作成する事ができます。

“`
username:~/environment $ cd snow-review
“`
3.リモートリポジトリへのPushの為にcdでアプリ上に移動しときます。

#2.リモートリポジトリの作成
– Your repositriesから[NEW]ボタンを押し、Create New Repositriesへ。
– Repository Nameを書き、その他お好みの設定をし、[Create New]ボタンで新規リポジトリ作成。
– 新しく作ったリポ

元記事を表示

[リファクタリング] ポートフォリオの検索機能 クラスメソッド

初めに

現役エンジニアの方からPFのフィードバックをいただきましたので、
リファクタリングを進めていきます。

実装している検索機能は以下の通りです。

![スクリーンショット 2021-10-01 10.08.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633266/e6268f8f-0d96-3c8a-dd44-e7ce53cfadef.png)

元々のコード

“`ruby:models/post.rb
def self.search(search)
return Post.all unless search
Post.where(‘title LIKE(?)’, “%#{search}%”).or(Post.where(‘content LIKE(?)’, “%#{search}%”))
end
“`

修正後

“`ruby:models/post.rb
def self.search(search)
retu

元記事を表示

OTHERカテゴリの最新記事