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

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

Rubyにおける○○.△△(ActiveRecordメソッド、インスタンスメソッド、データ取得)

#この記事を書いた背景
Rubyを学習している中で、○○.△△のパターンのコード(例: User.new)をたくさん見ました。
それぞれ使われ方が違うのではないかと思って調べたら、3つの使われ方のパターンが有りました。
ということで、今回は○○.△△のパターンをまとめました。

#対象読者
Rubyを学習中の駆け出しエンジニアさん

#実施環境
Ruby 2.6.5
Rails 6.0.3.3

#3つのパターンがありました
##①モデル(クラス)名.ActiveRecordメソッド名
モデルに対するテーブル操作で用いられます。
下の例では、『Tweet.all』、『Tweet.new』、『Tweet.find(params[:id])』の部分です。

~~~ruby
class TweetsController < ApplicationController def index #Tweetモデル(Tweetsテーブル)の全データ取得 @tweet = Tweet.all end def new #Tweetモデルのインスタンス生成 @

元記事を表示

querySelector()使用時の注意点(name属性を指定する時のひと工夫など)

# この記事を書いた背景
JavaScriptの『querySelector()メソッド』を使って、任意のHTMLを取得する処理を記述していたのですが、最初、うまく取得することができませんでした。
うまく取得できなかった理由は、取得するHTMLを指定する際に記述したname属性の指定コードがうまく書けていなかったためです。
今回はname属性を指定するひと工夫も含め、querySelector()使用時の注意点を書いていきたいと思います。

# そもそもquerySelector()メソッドとは
JavaScriptのメソッドで、任意のHTMLを取得するメソッドです。
指定したセレクタに一致する最初のHTML要素(Element)を取得するメソッドです。
『document.querySelector( CSSセレクタ )』のように使います。
実際の使い方は下記の例をご覧ください。

# 自分がどのようにつまづいたか
オリジナルアプリを作成中、ラジオボタンの実装を行ってましたが、
選択したボタンの値を取得する処理がうまく機能しない場合がありました。

下記の例で見ていきたいと思います。

元記事を表示

【ざっくり解説】ActiveHashモデルからnameが取得できない原因と対処法

__「ActiveHashのモデルからnameを取得したいんだけど、undefinedエラーが出て取得できない…」__

そんな方向けに、ActiveHashのnameを多少強引に取得する方法と、そもそもnameが取得できない理由について解説していきます。

プログラミング初心者の方は参考にしていただけると幸いです。
(なぜエラーが出るかご存知の方にとっては、この記事は無益です。ごめんなさい。)

### この記事の目的
・ActiveHashを使った正常な値の取得方法を復習する
・ActiveHashモデルからfindメソッドで値を取得する方法を学習する
・なぜundefindエラーが発生するのかを理解する

## 【前提】 ActiveHash 正常な値の取得

“`ruby:sushi.rb
class Sushi < ActiveHash::Base self.data = [ { id: 1, name: '大トロ' }, { id: 2, name: '中トロ' }, { id: 3, name: 'いくら' }, { id: 4,

元記事を表示

AWS Cloud9で初めてのLINEbot作成(Rails+Herokuデプロイ)

#はじめに
 Railsチュートリアルを終わったばかりのペーペーが、まず作ってみようと思ったのがLINEbot。文字をそのまま返す「くり返しBot」を今まで学習したモノを使って理解度を深めようというのが今回の目的。なので、あえてGASなど便利なものを使わずに「Rails+Cloud9+Heroku」で開発します。
##目次
– LINE Developersアカウント&新規チャネル作成
– Herokuアカウントを作成
– cloud9上にRailsアプリ作成
– バージョン管理(Herokuデプロイ)
– Bot用にコード編集
– LINEで動作確認

#LINE Developersアカウント&新規チャネル作成
 まずはLINE Developersにログインします。(https://developers.line.biz/ja/)
 初めての方は、普段使っているLINEアカウントで簡単に登録できます。プロバイダー情報を登録し、新規チャネルを作成します。
 詳しくはこちらの記事を参照ください。(https://qiita.com/nkjm/items/38808bbc97d6927

元記事を表示

AWS Cloud9 でRuby on Rails の開発環境を構築する

## はじめに
ふとRuby on Railsの勉強をはじめようと思い、環境構築をすることにしました。
せっかくなので、AWS Cloud9で環境構築をしようと思います。

## やること
この記事では、以下のことを実施します。

– AWS Cloud9環境構築
– Ruby 環境構築
– rvmを使用したruby version 2.5.1のインストールと切り替え
– Rails 環境構築
– gemを使用したrails version 5.2.1のインストール

##AWS Cloud9環境構築
Cloud9は、クラウド環境でIDE(統合開発環境)を利用できるサービスです。

ブラウザ上で動くため、OSやその他環境が異なるPCでも同じ手順で開発環境を準備することができます。
[特徴 – AWS Cloud9 | AWS](https://aws.amazon.com/jp/cloud9/details/)

### Cloud9環境作成

AWS マネジメントコンソールからCloud9の画面に遷移します。

Create enviroimentをクリックしま

元記事を表示

rails db:create実行時のFATAL: role “admin0” does not existとPG::ConnectionBad: FATAL: role “admin0” does not existの対処方

rails db:create実行時にエラーが出た際の解決方法について後発者のために解決方法のまとめを書いておく。

#####実行環境
`windows 10 home
ubuntu 20.04 LTS
ruby 2.7.1
Rails 6.0.3
postgresql 11
`

#エラー文

“`
$ rails db:create
FATAL: role “admin0” does not exist
Couldn’t create ‘taskleaf2_development’ database. Please check your configuration.
rails aborted!
PG::ConnectionBad: FATAL: role “admin0” does not exist
/home/admin0/taskleaf2/bin/rails:9:in `
/home/admin0/taskleaf2/bin/spring:15:in `
bin/rails:3:in `load

元記事を表示

sanitizeメソッドをView以外で使いたい。

現在開発中のアプリのセキュリティ診断を行ったのですが、XSS(クロスサイトスクリプティング)とかいう脆弱性が見つかり、対応することになりました。
Web開発者としては当たり前すぎる知識らしいですが、今回対応するのが初めてだったのでなかなか手こずりました。つまずいたことがいくつかあったので、今回はその中の一つを書いていこうと思います。

## 実現したいこと
https://qiita.com/kamohicokamo/items/571c58f2d6738a7dfe6a
この記事を参考に、XSS対策のためにデータのサニタイズを行いたい。

### 例: 

“`haml:name.html.haml
‘山田太郎
“`
このまま表示すると、
![スクリーンショット 2020-10-12 1.19.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/518222/6fcf8ff8-04bf-d96c-d19c-ef295a0f8814.p

元記事を表示

Ruby on Railsで初めてWebアプリを作った忘備録

タイトルの通りの内容です。

仕事を続けながら9月よりスクールにてRubyを中心に学んでいます。先日Ruby on Railsで簡単なウェブアプリを作ったので、苦労した点と反省点をメモとして残しておこうと思います。

Ruby on Rails ログイン機能のバリデーション設定

####Userモデルのname,emailカラムにバリデーションを設定

Railsガイドなどを参考にしています。
https://railsguides.jp/active_record_validations.html

【やりたいこと】
・名前やメールアドレスは空欄で登録できないようにする
・名前とメールアドレスの文字数制限

ポイントは
①”presence: true”→空欄での登録を禁止する
②”length: { maximum: }” → “:”の後ろに設定した数字以上の長さを禁止する

app/models/user.rb ファイルでの作業になります。
作成したのは下記のコード。

“`
class User < ApplicationRecord validates :name, presence: true, length: { maximum: 20 } validates :email, presence: true, length: { maximum: 300 }, end ``` うまくいっているか、Rails consoleで確認してみ

元記事を表示

Railsでいいね順に投稿を並べる(ランキング)

##概要
ネットでrailsのいいねランキングを探すとjoinを使った内部結合でいいねが1つ以上ある投稿をランキングする記事は見つかったがいいねが0のものを含めたランキングの記事が見つからず、
頑張って実装したので理解度を深める意味で殴り書きします。

##前提
Questionモデル(投稿)
Likeモデル(いいね)

##実装
※長くてごめんなさい

“`rb
@questions= Question.left_outer_joins(:likes).group(‘questions.id’).select(‘questions.*, COUNT(likes.*) AS likes_count’).distinct.reorder(likes_count: :desc).limit(100)
“`

##解説…?
1. Questionモデルにleft_outer_joins(:likes)でlikesテーブルを外部結合する
 joinsメソッドを使った内部結合だといいねされていないQuestionが除外されるため外部結合を使う。

2. 1で結合したテーブルをquestion

元記事を表示

Rails でTimezoneを動的 に保存、表示する実装方針

# 背景と要件
Meetingなどのイベントの時間をあらゆるタイムゾーンを考慮して保存したいという要求がありました。

たとえば、
Meeting1 は Tokyo で 11:00 〜開催される。
Meeting2 は UTC で 10:00〜開催される。

のようなことを表現したい。

# 実装手順
– RailsのAPIサーバーのdefaultのTimezoneを固定する。
– DBにTimezoneを保存する
– Timezoneを動的に変更するロジックをどこに挿入するかを決める。
– timzoneを考慮して、DBにtime型が保存されるか確認
– 保存する際に、timezone情報が無いstringが渡されないようにvalidation

# RailsのAPIサーバーのdefaultのTimezoneを固定する。

まずRailsは考慮するタイムゾーンが複数存在します。

https://qiita.com/joker1007/items/2c277cca5bd50e4cce5e

今回は、混乱をさけるため一旦以下すべてのTimezoneをUTCにしました。

元記事を表示

【JavaScript】分からない部分まとめてみたら最強だった件

どうも、三町哲平です。

Ruby on RailsでWebアプリを開発中なのですが、どんなプログラミング言語やフレームワークを使っていてもJavaScriptが絡んできます。

正直な話、HTMLやCSSは分からない部分はその都度調べていけば、よっぽど手の込んだアプリケーションではない限りは素人でもそれなりのクオリティに仕上げれるという感覚があるのですが、JavaScriptが予想以上の難敵なんですよね。

しかも調べていくうちにどうも、フロントエンドだけではなくバックエンドでも使えるらしいじゃないですか…てことは、JavaScriptが最強なのでは…!?という疑問から色々とJavaScriptに調べてみましたので、少しばかりお付き合い下さい…。

では、どうぞ!

## JavaScript

> 一番身近なのは、W

元記事を表示

redirect_toとrenderの違い

#はじめに

処理を書くたびにまだよく混同してしまうので、
パッとすぐ思い出せるようにメモしておきます。

#違い

###redirect_to

“`user_controller.rb
def ~
# 処理

redirect_to(“/app/posts/new”)
end
“`

指定先:
URL(/URL/〜/〜/)

ルート:
controller → URL → route → controller → view

主な用途:
データの更新や削除が必要な場合など → **「適切なcontrollerでの処理が必要」なとき**

###render

“`user_controller.rb
def ~
# 処理

render(“user/edit”)
end
“`

指定先:
ディレクトリ/ビュー

ルート:
controller → view

主な用途:
ログインや入力形式に失敗した場合など → **「ただエラーを表示させたい」とき**

#参考

[【Rails】renderとredirect_toの違いと使い分け](https://qiita

元記事を表示

nested_formでf.link_to_add以外をクリックしprefillした要素を追加する

通常の使い方では、 `link_to_add`というformメソッドで表示されるaタグで要素を追加しますが、
今回私が実装したパターンは、canvasをクリックした座標をnested_formの要素を追加し、その要素に座標をprefillする、というものです。

調べた感じだと、link_to_addメソッドはblueprintなどをふくむDOM構造に依存したイベントで動いているため、`link_to_add`が内部で使っているjavascriptのメソッドを使ってきれいに実装することはできませんでした。

従って、基本的な実装方針は、canvasのクリックイベントハンドラーで、グローバルなストアに座標を書き込み、 `nested:fieldAdded` イベントで、グローバルなストアから座標を読み取る、という外部を中継する実装にしました。

“`javascript
function handleClick(e) {
[…]
var linkToAdd = $(‘[data-blueprint-id=”connectors_fields_blueprint”]’)
li

元記事を表示

[rails]herokuのデプロイエラーActionView::Template::Error (Mysql2::Error: Table — doesn’t exist):

herokuにデプロイした際にエラーが出てしまいました。We are sorry…というやつです…

#エラー内容

heroku logs –tail –app [app名] でログを確認したところ以下mのようなエラーが出ました
これはあるテーブルでエラーが出ているみたいですね

“`
ActionView::Template::Error (Mysql2::Error: Table ‘heroku—-‘ doesn’t exist):
“`

#考えられる原因

調べましたところ、このエラー文で考えられる原因は以下の3点でした(他にもある可能性はあります )

###1railsのバージョンの問題

rails5.0と5.2の場合はこのようなエラーが出ることがあるみたいです
migrationファイルの書き方,型に問題があるといった点で問題があるみたいです
私は6.0であまり詳しくしらべてませんので もし当てはまるかたは調べてみてください

###2 調べたときにupになっていない or NO FILEがある。

ターミナルでrails db:

元記事を表示

[Ruby on Rails]色の割合を明示する円グラフを実装する

自身が欲しいのと、作ってみたら面白そうという思いの元、現在、自身の服を管理できる「クローゼットアプリ」のようなものを、個人で作成しています。
そこで自身の服の色の割合を、円グラフでわかりやすく表示できれば、いいなと思い今回実装いたしました。

#開発環境
Ruby 2.5.1p57
Rails 5.2.4.4
使用gem
  ・active_hash
  ・chartkick
  ・chartable

#実際に作っていく
今回実際の色のデータをどこに持たせるか非常に悩みましたが、active_hashを使用し、モデルにハッシュ形式で、データを持たせ、そのIDを「colors」というデータベースに保存することにしました。

まずGemfileに下記を記述します。

“`ruby:Gemfile
#~省略~
gem ‘active_hash’
gem “chartkick”
gem ‘chartable’
#~省略~
“`

application.jsに下記を記述します。

“`javascript:application.js
//= require Chart.bundle

元記事を表示

Ruby on Rails 6.0 の環境構築メモ

# はじめに

個人のWindows10のPCに初めてRuby on Railsの環境構築するまでの備忘録。
ちなみに筆者は、Web系はLinux(CentOS)とWindows10のCakaPHPをおさわりしたことしかない。

# Ruby 2.6.6 のインストール
Ruby2.7とRails6.0(あるいは周辺gem)の組み合わせによっては警告が発生する場合があるとのことなので、Ruby2.6.6を選択。

– 下記リンクにて「rubyinstaller-devkit-2.6.6-1-x64.exe」をダウンロード。
https://rubyinstaller.org/downloads/

– ここで後のコマンドラインによるインストール処理にてエラーが発生するため、事前にWindowsFWとセキュリティソフトを停止しておく。

– ダウンロードしたインストーラーを実行。
「Use UTF-8 as default external encoding.」にチェック
「MSYS2 development toolchain 2019-10-01」にチェック
エディタ「VisualS

元記事を表示

OTHERカテゴリの最新記事