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

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

CSV 使い方 基本

“`ruby
require “csv”

text =<<-EOS id,first name,last name,age 1,taro,tanaka,20 2,jiro,suzuki,18 3,ami,sato,19 4,yumi,adachi,21 EOS csv = CSV.generate(text, headers: true) do |csv| csv.add_row(["5", "saburo", "kondo", "34"]) end print csv ```

元記事を表示

【Ruby on Rails】ストロングパラメーターはなぜ必要か?paramsの脆弱性

##はじめに
どうも、27歳未経験からエンジニア転職を目指しているもきおです。

Railsでコントローラを記載する際に最後にストロングパラメータ書いてねって記載されてたりしますが、そもそも **ストロングパラメータって何ぞや?**って思いながらも当時はとりあえず動けばいっかみたいな感じであまり理解しないまま進めてしまってました。

ストロングパラメータの記載はこんな感じ

“`ruby:user_controller.rb
private
def user_params
params.require(:user).permit(:name,:email,:password)
end
“`

今回はなんでこれが必要なのって話とparamsは使いようによってセキュリティの脆弱性があるよってお話をしていきたいと思います。

##ストロングパラメータを使わないとどうなる?
ストロングパラメータを使用しないとどのようなセキュリティ上の問題が起こるのでしょうか?
例えば以下の記載でuser_controllerのcreateを作成したと

元記事を表示

[Ruby] AtCoder過去問 B – A to Z String

##はじめに
AtCoder過去問B問題をRubyで解いてみました。
よろしくお願いします。

問題はこちらから確認してください↓

https://atcoder.jp/contests/abc053/tasks/abc053_b

##B – A to Z String
まずは入力受け取りです。
一文字ずつ分けて配列で受け取っています。

“`ruby
s = gets.chomp.chars
“`

この問題メソッドさえ知っていれば非常に簡単で、要は配列sの中で一番はじめに出てくる(一番先頭に近い)文字Aのインデックス番号(位置)を特定し、配列sの中で一番末尾に近い文字Zのインデックス番号(位置)がわかれば、zのインデックスに+1した数(インデックス番号は0から始まるため+1する)からAのインデックスを引けば文字列の数が分かります。

Aのインデックスはindexメソッドで分かります。
Zのインデックスはrindexというメソッドで末尾からはじめに見つかるZの位置を特定することができます。

“`ruby
s = gets.chomp.chars
a_index = s

元記事を表示

Rails部分テンプレート(パーシャル)まとめ

## 使い方1
“`erb:before
xxx.html.erb

<%= @user.name %>
<%= @user.email %>
<%= @user.age %>
“`

“`erb:after
xxx.html.erb
<%= render partial: 'hoge', locals: {user: @user} %>

_hoge.html.erb
<%= user.name %>
<%= user.email %>
<%= user.age %>
“`
※ 書き方:`<%= render partial: 'ファイル名', locals: { '部分テンプレート内で使う変数': '変数に入れる値' } %>`

※ ファイル名は、render記載のファイルと同じディレクトリにある`_hoge`なら`hoge`。

※ localsオプションを使った場合はpartialは省略できない。

※ partialを省略したいならlocalsオプションも省略しないといけない

(例:`<%= render 'hoge', user: @user %>`)

元記事を表示

メソッドによるコード省略!

コントローラーに同じ記述があった際、まとめる為の記述を解説します!

下記の例を参考にして、before_actionを使用して、メソッドとしてまとめます!

#①.before_actionメソッドを使用して、同じコードをまとめる!

例として、下記の記述では,

@eat = Eat.find(params[:id])が、繰り返し使用されています!

“`php
class eatsController < ApplicationController def index @eats = Eat.all end def edit @eat = Eat.find(params[:id]) end def show @eat = Eat.find(params[:id]) end private def eat_params params.require(:eat).permit(:name, :image, :text) end end ``` この記述をまとめるために、before_actionを

元記事を表示

【Rails6】cocoonによる動的フォーム作成時に注意すべき点。「”accepts_nested_attributes_for”」、「”can’t be blank”」

cocoonを用いて、動的に変化するフォームを作成した際にハマったことを記します。
cocoonの導入は以下の記事を参考にしました。
・[【Rails】cocoonを用いて親子孫関係のテーブルに複数のデータを同時保存する方法 – Qiita](https://qiita.com/hitochan/items/5a45a95e644492d66160)
・[【Rails6】cocoonを使った動的フォーム入力画面の作り方 – Qiita](https://qiita.com/shooo777/items/4691a08357ee15233d4a)

#問題概要
 以下のような3つのモデルを作成し、関連づけたと仮定します。

|関係 |モデル名 |
|—|—|
|親 |Parent |
|子 |Child |
|孫 |Grandchild |

上記記事を参考にしながらフォームを作成し、できたフォームよりデータを送信したら、以下のようなバリデーションに引っかかりました。

:::note alert
Child Grandchild child can’t be bl

元記事を表示

【個人用】Rails Tutorial -1

はじめに

本投稿は、投稿者本人の知識定着を目的として学んだことをアウトプットしているものです

Rails インストールからHerokuへのデプロイまで

開発環境→AWS Cloud9

1.Railsのインストール手順

①インストール時間を短縮するため、Rubyドキュメントの設定を追加

“`
$ echo “gem: –no-document” >> ~/.gemrc
“`
②バージョンを指定してRailsをインストール

“`
$ gem install rails -v 6.0.3
“`
③インストール及びバージョンの確認

“`
$ rails -v
Rails 6.0.3
“`
④JavaScriptソフトウェアの依存関係を管理する__Yarn__をインストール
今回はCloudIDEなので下記コードを入力し実行でOK

“`
$ source <(curl -sL https://cdn.learnenough.com/yarn_install) ```

2.アプリケーションの作成〜実行

元記事を表示

SNS認証におけるNot found. Authentication passthru.エラーについて

##概要
 SNS認証(Omniauth使用)時に(今回はGoogle認証を使用した場合となります)おいて、Google認証ページに遷移しようとすると、「Not found. Authentication passthru.」のエラーが出た場合の対処法について記載します。
 SMS認証の導入自体は、下記の記事にお世話になりました。ありがとうございます。

・[deviseとOmniAuthをRailsアプリケーションに導入しテストする](https://qiita.com/yuki_0920/items/003d8b1c73352378188d)

#対処法
 該当部分は、app/views/devise/shared/_links.html.erbにある、認証画面への遷移用リンクとなります。(user_google_oauth2_omniauth_authorize_pathでエラーが生じます)

“`app/views/devise/shared/_links.html.erb(該当部分のみ抜粋)
<%- if devise_mapping.omniauthable? %>

元記事を表示

[Ruby] AtCoder過去問 B – Exponential

##はじめに
AtCoder過去問B問題をRubyで解いてみました。
よろしくお願いします。

問題はこちらから確認してください↓

https://atcoder.jp/contests/abc097/tasks/abc097_b

##B – Exponential
まずは入力をうけとります。
また、1が入っている配列を作っておきます。

“`ruby
x = gets.to_i
ary = [1]
“`

このあとwhile文を使うのですが、そのとき1×1はどれだけ繰り返しても1で無限ループへ突入するため、配列には初めから1を入れておきます。

1は初めから入っているので2~xまでのeach文を作成します。iという数字はこの後の処理の中でも固定しておきたいのでコピーとして変数jを用意してiを代入しておきます。

“`ruby
x = gets.to_i
ary = [1]
(2..x).each do |i|
j = i
“`

続いてwhile文を作成します。i × jの答えがxより大きくなったときは処理を終了させます。
i × jの答えがx以下の間はi × jを行

元記事を表示

Rails6+mysql5.7+Docker+AWSで作成したポートフォリオの概要

#はじめに
この記事では私が作成したwebアプリのポートフォリオの解説をします。
作成したポートフォリオは下記になります。↓
[作成したポートフォリオ](https://forza-kanazawa.com/)

#自己紹介
年齢:27歳
職業:地元企業のエンジニアリング部に所属
住居:地方
趣味:映画、音楽、英語(TOEIC:770)、バレーボール

映画はSFが好きで特にスターウォーズが好きです(アイコンはマンダロリアン)。英語の勉強も兼ねて英語で鑑賞するようにしています。
大学時代は軽音部に所属しており音楽は今でもよく聴きます。
中高、社会人とバレーボールを続けており、春高やVリーグは今でもチェックしています(制作背景につながります)。

#制作背景
私は中学生〜高校生、社会人とバレーボールを続けています。

元記事を表示

【Sinatra】アプリにファビコン(favicon)を設定しよう

###はじめに

以前、Railsでfaviconを設定しました。→([こちら](https://qiita.com/mihooo24/items/380cc2b9c6980bfd0bfa))
今回はSinatraでfaviconを設定しようと思い探したものの、エラー関連の記事が多く
時間が掛かったので備忘録として記録します。

###環境

– mac.os バージョン10.15.6
– Ruby 2.7.2
– psql (PostgreSQL) 12.6

###手順
####①faviconにしたい画像を探して、保存する
このときに、ファイル名を`favicon.ico`にしておきます。

####②アプリ内に格納する
今回は`app/assets/images`内にfaviconを格納しました。
※格納はドラッグ&ドロップでできます。

####③コードを記述する
`app/views/layout.erb`
※ビュー(ERB)のheadタグ内に以下の一文を書きます。

“`erb



OTHERカテゴリの最新記事