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

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

RESTを分解してみた

#はじめに
Railsチュートリアルをやっていて
「セッションをRESTfulなリソースとしてモデリングできると、他のRESTfulリソースと統一的に理解できて便利です。」
みたいな文章があってRESTとかRESTfulとかの意味を調べてもしっくりこなかったので自分なりにRESTを噛み砕いてアウトプットしようと思います。

#結論
まずはじめに結論から述べると、

**「クライアントとサーバー間で行われる送受信は、決められた形式(HTTP)で行われている。ということを表現したもの。」**

という自分なりの解釈になりました。

#経緯

上記の結論に至った経緯を書いて行きます。
まずは自分なりにREST(Representational State Transfer)を英訳してみました。

Google翻訳にてシンプルに『Representational State Transfer』と翻訳
↓↓
結果「代表的な状態の移転」
というなんのこっちゃ分からない表現に。。。

そこで一つ一つを分解して英訳を実行。
①Representational→代表的な、具象の(はっきりした姿、形)

元記事を表示

【Rails】param is missing or the value is empty:について

#問題箇所のコード
“`controller.rb
def create
@collect = Collect.create(collect_params)
if @collect.save
redirect_to “/group/show/#{@collect.group_id}”
else
render “new”
end
end
(省略)
private
def collect_params
params.require(:collect).permit(:url, :group_id)
end

“`

主にcollect_paramsが悪いはず。

#param is missing or the value is empty:
意味は単純にparamsが存在しないか空ですとなる。

パラメータを確認するとこんな感じ。ちゃんと情報渡せてるように見えるけどfalseになってる。

“`

元記事を表示

MacでDocker+Rails+MySQL環境構築手順メモ

勉強するときに環境構築にかなりつまづいたので、その手順をメモしときたいと思います。

#環境構築手順
前提として、rails開発用のディレクトリが用意されているものとします。

以下の手順に従ってファイル作成やコマンドを実行していけば問題なく手順は整うと思います。

##Dockerfileの作成(以下をコピペ)

“`dockerfile

# rubyはお好みのバージョンで(ローカルのバージョンがいいと思います)

FROM ruby:2.6.3

# 必要なパッケージのインストール(基本的に必要になってくるものだと思うので削らないこと)

RUN apt-get update -qq && \

apt-get install -y build-essential \

libpq-dev \

nodejs

# 作業ディレクトリの作成、設定

RUN mkdir /app_name

##作業ディレクトリ名をAPP_ROOTに割り当てて

元記事を表示

外部キー作成の時の注意事項

###テーマ「データベース 頭文字は大文字か小文字か」
この投稿はRailsのデータべース作成に関する記事です。
データベース周辺は間違えると後のアプリ開発に悪い影響を与えてしまいます。
このミスを参考にみなさんは出来る限りデータベース周辺では間違わないようにしてください!

###今回の主犯
外部キーの頭文字を大文字にしてしまったため、seed.rbからデータを入力できなくなった。
実物はこちらです。Faculity_id←これ。。。本来はfaculity_idとなるべきはず

“`scheme.rb

create_table “majors”, force: :cascade do |t|
t.index [“Faculity_id”], name: “index_majors_on_faculity_id”
end
“`

###ミスの原因
1ヶ月ぶりにRailsを触り、フレームワークの使い方を忘れてしまったこと:sob:
(初心者は毎日触らなけれぼなりませんね。思い知りました?)

###ターミナルで入力した間違いのコマンド
referencesの前を大文字

元記事を表示

【Rails】mechanizeを使えばrailsスクレイピングが余裕な件

スクレイピングに初挑戦したとき、検索上位にあがるサイトはどれもnokogiriを使用するのですが、dockerだとうまく利用できず四苦八苦していました。

その中で見つけたのが**mechanize**というgemです。

自分用メモのためにも今回はコードを書いときたいと思います。

#前提
railsアプリは作成済み
gem mechanize インストール済み

#Controller
controllerでは.getメソッドとsearchメソッドを使ってページ情報を取得します。

“`
def home

agent = Mechanize.new

page = agent.get(“https://nemlog.nem.social/”)

@elements= page.search(‘.visit-w’)

end
“`

あとはインスタンス変数@elementsを利用してviewに表示するだけです。

#View
“`
<%@elements.each do|element|%>

元記事を表示

【RuboCop】複数行の引数の最後の値にカンマを付けたい

# 複数行の配列や引数を書くとき
### 最後にカンマを付けない派
“`seeds.rb
User.create!(
name: ‘foo bar’,
email: ‘foo@baa.com’,
password: ‘password’,
password_confirmation: ‘password’
)
“`
`rubocop -a`で自動整形すると、デフォルトでは上記のように整形されます。
ruby以外の言語だと、引数や配列の最後にはカンマを付けるとエラーになったりするので、一般的に使われている書き方だと思います。
### 最後にカンマを付ける派
“`seeds.rb
User.create!(
name: ‘foo bar’,
email: ‘foo@baa.com’,
password: ‘password’,
password_confirmation: ‘password’,
)
“`
分かりづらいですが、先程の例と比べると、最後の引数の後にカンマが付いているのが分かります。
rubyでは上記のように最後の引数にカンマを付けても問

元記事を表示

【Rails6】ActiveStorage::Blob#purge すると FrozenError

# 環境
– Ruby: 2.6.3
– Rails: 6.0.2.1

# 入力エラー時の purge でエラーが発生するようになった

こんな感じの has_one_attached の項目を持つmodelで、

“`ruby:post.rb
class Post < ApplicationRecord has_one_attached :image # 他にもいくつか項目・・ end ``` 入力エラー時に has_one_attached の項目を purge するとエラーが発生しました。 ※Rails5.2.4.1までは正常に動作していました ```ruby:posts_controller.rb def create Post.create!(post_params) rescue ActiveRecord::RecordInvalid => e
post = e.record
post.image&.purge # <= ここでエラー!! end ``` エラーメッセージはこんな感じでした。 ``` FrozenError can't mo

元記事を表示

Rails6 テーブル作成時のmigrateでエラーが出た話

# 目的

– テーブル作成を行なった際にmigrateでエラーが出た話をまとめる

# エラー内容

– 下記コマンドでモデルファイルを作成した。

“`terminal
$ rails g model user name:string
“`

– その後、下記コマンドでmigreteを実行した。

“`terminal
$ rails db:migrate
“`

– 下記のエラーが発生した

“`
[14:50:10]MacBook-miriwo~/workspace/study/rails/tropical_fish_sns_of_rails$ rails db:migrate
== 20200206055010 CreateUsers: migrating ======================================
— create_table(:users)
rails aborted!
StandardError: An error has occ

元記事を表示

Rails Params

コントローラーにたどり着くデータが格納されているハッシュオブジェクトのようなもの。
![a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576859/509e05fc-6326-3c56-7379-51f105dcd107.png)
新規投稿ページにフォームを記載

ルーティングを設定。
その後newからcreateにつなげる
![a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576859/0c293b88-9897-f5a9-2447-d83cb0a0ae1a.png)

()に登録する情報を記載
![a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576859/645b9346-9bca-001b-caec-a2c2bf34eb63.png)
![a.png](https://qiita-image-store.s3.ap-

元記事を表示

Railsで部分テンプレートを使用時、Missing テンプレートエラーが出た際、解決したこと

#Missing partial shared/_header with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :coffee, :jbuilder]}. Searched in:っというエラーが発生した際、どう解決したのか

erbファイルに部分テンプレートを書く際は、基本 <%= render 'ファイル名' %> でよかったはず・・・・
以下参照(ピカワカさんありがとうございます)
https://pikawaka.com/rails/partial_template

スクリーンショット 2020-02-07 21.09.21.png

以上のような

元記事を表示

Rails ヘルパーメソッド

主にview(ビューファイル)でHTMLタグを出現させたりテキストを加工するために予めメソッド。セキュリティ対策、コードをシンプルにする効果がある。form_tag(投稿ページなどにおけるフォームの実装)、link_to(リンクの実装)、simple_format(投稿した文章を自動で見やすく整形する)などがある。
form_tagを利用する場合

![a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576859/70c001e9-b56b-fc19-433a-6a5b70658653.png)
![a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576859/00b03e08-616e-d1f0-3ca3-2c800f8f8740.png)
ヘルパーメソッドはRubyとして取り扱われるので、<%= %>(erbタグ)で囲んで使用する。/postsはルーティングのURIパターン、method: :postはHTTP

元記事を表示

人の感情を可視化するアプリを作りました【キドアイラク】

# はじめに
皆さん初めまして!
本記事は私がrailsで作った初めてのアプリである「キドアイラク」の紹介記事になっています。
![スクリーンショット 2020-02-07 16.08.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240465/e76eb2ff-6473-1758-6db4-bfae829fbe5f.png)

https://kidoairaku2019.herokuapp.com

この「キドアイラク」がどのようなアプリかというと、タイトル通り「人の感情を可視化する」アプリです。
自分がここ数日どんな感情で過ごしていたのか、他の人はどんな時にどんな感情を抱くのかを一目で確認することができます。
街中を歩く一人一人の感情が透けて見えるイメージです。
本サービスを作った背景や機能は後ほど詳しく語りたいと思いますので、もし興味がある方は読んで頂けると幸いです。

そして、僅か一ヶ月ほどで作ったのでショボい作りにはなっていますが、是非一度使っていただけると嬉しいです。
# 作った理由

元記事を表示

簡単なアプリケーションを作ってみる

## railsでは簡単にこんなことができる!
「Ruby on RailsとはRubyのフレームワークだ」と聞きますね!
rails を使うとWebアプリケーションがつくれますが、rails を勉強していて、 スクリーンショット 2020-02-07 18.34.31.png

本当に簡単に(魔法のように)、簡単な(簡易的な)アプリケーションを作る方法を知りました。
それが、`scaffoldジェネレータ`を利用した方法です。紹介したいと思います〜。

## scaffoldとは?
rails のアプリケーションでは、MVC(モデル、ビュー、コントローラー)を使って一つ一つ作成していき、ルーティングを設定しますが、そういうのをまとめて自動的に作ってくれるのが`scaffoldジェネレータ`なのですね。

##

元記事を表示

【実体験をもとに】30歳未経験から独学4ヶ月でバックエンドエンジニアとしてWeb系自社開発企業へ転職するまでのロードマップ

こんにちは。

2020年2月現在、スタートアップ期のWeb系自社開発企業から内定をいただきました。
今回はこれからプログラマーとしてWeb企業へ転職される方を応援するため、私が知識ゼロの状態から学習をスタートし転職するまでの過程を踏まえたロードマップを共有します。
一つの例として参考にしていただければと幸いです。

#前置き
本記事はプログラミング初心者を対象にしたものなので、理解しやすいように噛み砕いて文章を作成しています。
多少語弊のある内容もあるため現役プログラマーの方の閲覧時は生暖かい目で見てください(笑)

私の実体験をもとに作成していたため、実際にはもっと素晴らしいロードマップもあると思います。

#投稿者スペック
エンジニアキャリア1ヶ月目のできたてホヤホヤ新人
年齢:30歳(既婚)
住所:埼玉県
前職:一般企業の拠点マネジメント系
学歴:大卒(文系)
・プログラミングの知識はゼロ(多少Excelを触れるくらい)
・わりとコミュ力はあるほう

#転職先での待遇
給料(年収):400万ほど(前職と同程度)
社会保険などの福利厚生
リモートワーク可

#学習開始から転職ま

元記事を表示

Railsでja.ymlが反映されない

railsにてja.ymlに追記をしたが反映されなかった

“`ruby:ja.yml
#変更前(反映されなかったもの)
ja:
activerecord:
attributes:
 board:
name: 名前
title: タイトル
body: 本文

#変更後
ja:
activerecord:
attributes:
board:
name: 名前
title: タイトル
body: 本文
“`

boardのインデントが問題で反映されなかったよう。
直したら反映された。

元記事を表示

【Rails,Ajax】$.ajaxのurlについて

##やりたいこと
画面に値を入力し、非同期通信でtodos_controllerのcreateメソッドへ送り、登録処理を行う。

##疑問
$.ajax内のurlに「/todos.json」を設定しているが、なんでcreateメソッドが呼び出されるの?
createへ行くには「/todos」を指定すべきじゃないの?

““
$.ajax({
type: ‘POST’,
url: ‘/todos.json’,
data: {
todo: {
content: todo
}
},
dataType: ‘json’
})
“`

“`
Prefix Verb URI Pattern Controller#Action
todos POST /todos(.:format) todos#create
“`
##わかったこと
(.:format) によって、「/todos.json」のような拡張子の指定もできるらしい。
よって上記url

元記事を表示

Rails コーティング規約について 2

# はじめに
Ruby、Railsの基礎を学習中の方に向けて記載致します。
[Rubyのコーティング規約はコチラをクリック願います。](https://qiita.com/raigakun/items/80ba30671d7b2b18c44e)
[Railsのコーティング規約 1 はコチラをクリック願います。]
(https://qiita.com/raigakun/items/cdf4dbfacada59990627)
私自身これからチーム開発を行う上で大事にしたい。知っておきたいことをOutputします。

#ActiveRecord Queries
####idを指定してひとつのレコードを取得する場合は、whereよりfindを使う。

“`ruby:qiita.rb

# 悪い例
User.where(id: id).take

# 良い例
User.find(id)
“`

####複数の属性を指定してひとつのレコードを取得する場合は、whereよりfind_byを使う。

“`ruby:qiita.rb
# 悪い例
User.where(first_name: ‘R

元記事を表示

中規模以上レガシーRailsシステムのリファクタリング方針

# 前置き
ここ一年、現職において0→1フェーズからすくすく育ってきたRailsプロジェクトのバックエンド全般を任されており、リファクタリング方針において、ある程度いい感触を掴みつつあるので、その知見を共有してみようってことで書いてみました。

# 現状
– 一連のビジネス要求に対する判断や分岐、データアクセスといったドメインロジックが、controllerや、方々のmodelに跨って定義されていることによるドメインロジックの見通しの悪さ
– データアクセスと判断や分岐といった処理がmodelに一緒くたに実装されているため、テストコードの実装が難解である
– テストコードの実装が難解であるため、テストの実装を諦め、人力動作確認でリリースまで進めるが、高確率で予期せぬデグレが発生する
– リリース後にデグレ対応に追われるため、スムーズに次の開発へと移行できない

**どうしよう**
![dousiyou.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/247146/8f20f3c0-4dc5-60b7-66

元記事を表示

【Rails】gem’RSpotify’を利用し、SpotifyAPIからアーティスト情報を取得する検索機能を作成する

#概要
Railsアプリケーションにて、SpotifyAPIを利用し、検索機能を実装します。
SpotifyAPIのラッパーであるRSpotifyというgemを利用する方法になります。

#SpotifyAPIへアプリの登録

SpotifyAPIを利用するにはアカウントを作成し、デベロッパー用のダッシュボードで連携するアプリを登録する必要があります。
アプリを登録すればAPIへアクセスするためのIDが取得できます。

ユーザーアカウントの登録を行う。
https://www.spotify.com/jp/

アカウント作成完了後にデベロッパー用のダッシュボードへ。
https://developer.spotify.com/

“CREATE AN APP”をクリック。
アプリケーション名とアプリケーションの説明を英語で記載し、
アプリの種類は何かをチェックしてください。
商用かどうかが確認されますので、いずれかを選択。
今回はNoを選択しました。

作成完了すれば、
“CLIENT ID”と”CLIENT SECRET ID”が発行されます。
“CLIENT SECRET ID

元記事を表示

rails チュートリアル2週目~ヘルスケアwebサービスを自分で作る医者の日記~

railsチュートリ
の3章初めからてこずった

最初sqlite3 をsqlite とgemfileに書いて
失敗
その後 書き直して add commit heroku にpushするも

デプロイできず

“`
heroku run rails
“`
するも

“`
Specified ‘sqlite3’ for database adapter, but the gem is not loaded. Add `gem ‘sqlite3’` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord). (Gem::LoadError) heroku
“`
となる。
herokuはsqlite3いらないんじゃなかったの?
bundle install –without production でsqlite3はのぞいているのに

“`
remote: ###### WARNING:
remote:
remote: Detecting rails

元記事を表示

OTHERカテゴリの最新記事