Ruby関連のことを調べてみた2020年01月14日

Ruby関連のことを調べてみた2020年01月14日
目次

【Ruby on Rails】デフォルトメッセージの日本語化

エラーメッセージなどのデフォルトメッセージを日本語化する設定です。

バージョン情報

Ruby 2.6.3
Ruby on Rails 5.2.3

設定方法

`config/initializers/`配下に`locale.rb`というファイルを作成します。ファイル名は何でも良いですが習慣上`locale.rb`にしてあります。

下記の2文を記載します。

“`ruby:config/initializers/locale.rb
I18n.config.available_locales = :ja
I18n.default_locale = :ja
“`

日本語の辞書ファイルを作成します。
`config/locales/`に`ja.yml`というファイルを作成し、下記のURLの本文を作成したファイルにすべてコピペします。

https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/ja.yml

モデル名などはまだ英語のままなので、個別で日本語化していきます。
`config/locales/

元記事を表示

インクリメント・デクリメントの書き方のまとめ(Scala、Java、Rust、C言語、C++、Go言語、PHP、Perl、Python、Ruby、JavaScript)

いろんな言語を触っていると、言語の細かい仕様がだんだんごっちゃになってきてしまいますので、メモです。

インクリメント・デクリメントの有無

あり: Java、C言語、C++、Go言語△、PHP、Perl、JavaScript
なし: Scala、Rust、Python、Ruby

Go言語は式を構成する演算子ではなく文(statement)という扱いにすることで、インクリメントの演算子としての問題を回避していて、個人的にはちょうどいい仕様に感じます。

ついでに代入演算子も確認しましたが、こちらはだいたいの言語にあるようです。

# Scala

– インクリメント・デクリメント演算子はない
– 代入演算子はある

“`scala
i += 1
i -= 1
“`

`i += 1` などは `i = i + 1` などのシンタックスシュガー。

参考

[Assignment Operators – Expressions | Scala 2.13](https://scala-lang.org/files/archive/spec/2.13/06-expressions.ht

元記事を表示

ActionView::MissingTemplate in Groups#newの一例

# 1.どんなエラー?
renderメソッドで表示しようとしている、viewファイルがありませんという内容です

筆者の場合は同じgroupsフォルダ内のformというファイルで記載したものを引用しnewファイルで表示しようとしていました。(下記参照)

###### <エラー文>

スクリーンショット 2020-01-14 2.23.39.png

###### <エラーに関係したgroupsフォルダ内のファイル>

“`haml:new.html.haml
.chat-group-form
%h1 新規チャットグループ
= render partial: ‘form’, locals: { group: @group }
“`

“`haml:form.html.haml

= form_fo

元記事を表示

【Rails】destroyメソッドを使用しようとしたら”ArgumentError (wrong number of arguments (given 0, expected 1)):”

## はじめに
Railsの`destroy`メソッドを使用しようとしたら以下のように**引数が1つ必要なのに見つかりません**とエラーが発生しました。
凡ミスですが、記録として残します。

“`shell
ArgumentError (wrong number of arguments (given 0, expected 1)):
“`

## 環境
“`yaml
OS: macOS Catalina 10.15.1
Ruby: 2.6.5
Rails: 6.0.2.1
“`
## 結論:解決法
今回のコードは以下のようになっていました。

“`ruby
def destroy
posts = Post.where(user_id: 1)
posts.destroy #ここでエラー発生
end
“`

“`ruby
def destroy
post = Post.find_by(user_id: 1)
post.destroy #これは通る
end
“`
このように、`find_by`にすると通ります。

もしくは、該当データが複数ある場合は

元記事を表示

【初心者向け】超簡単ドリンク注文アプリケーション(ドリンクに値段をつけるver)

#超簡単ドリンク注文アプリケーションに値段をつけてみる

こちらは前回の続きです。
前回のアプリケーションはこちら
https://qiita.com/pontarou194/items/708452b47464bfcad122

条件
 ・実行時、どのようなドリンクがあるかを表示させる
 ・ドリンクには番号をつける
 ・選ばれた番号と同じドリンク名を表示させる
 ・ドリンクに値段をつける
 ・ドリンクの注文数を訪ねて、入力された値に対して合計額を表示させる

#擬似コード

“`ruby

def
お茶が選ばれた場合、値段を表示
注文数を入力
合計額を表示
end

def
コーヒーが選ばれた場合、値段を表示
注文数を入力
合計額を表示
end

def
ビールが選ばれた場合、値段を表示
注文数を入力
合計額を表示
end

def
サイダーが選ばれた場合、値段を表示
注文数を入力
合計額を表示
end

#それぞれのドリンクメニューの値段を残す
otya = 100
coffee = 200
beer = 300
saida = 400

#ここから先、変数をつけたの以外は

元記事を表示

ハッシュから値だけを取り出し、配列にしてください。(valuesメソッドは使用しない)

#問題
以下のハッシュから値だけを取り出し、配列にしてください。ただしhashクラスのvaluesメソッドは利用しないものとする。
attr = {name: “小島”, age: 32, height: 175, weight: 66}
#回答
ハッシュ
1  values = []
2  attr.each do |key, value|
3    values << value 4  end #解説 1行目でvaluesという配列が作成される。 2,3行目で配列の中身をキーと値に分け、順番に値のみをvaluesに入れる処理をする。 4行目でeachメソッドを終了する

元記事を表示

【実践】SolidusでRails製ECサイトを作ってみる

SolidusはSpreeの後継のRails製オープンソースECサイトのプロジェクト。
OSSを使わないとしても、ECに最低限の機能が入ってるので、自分たちで機能の洗い出しするより、これを参考にした方が早い。

# 準備

以下をインストールしていない人はインストール

Rubyはバージョンが低いとfiniteのエラーが出ます。
テスト環境ではv2.5.1を使用しました。

“`
brew install sqlite3 imagemagick
“`

### 1. Railsアプリを作成

“`bash
rails new myshop –skip_webpack_install
cd myshop
“`

### 2. Gemfileに以下を追加

“`ruby:Gemfile
gem ‘solidus’
gem ‘solidus_auth_devise’
“`

‘solidus’をrequireすると、以下がまとめてインストールされます。個別にインストールすることも可能なよう。
`solidus_core`
`solidus_api`
`solidus_front

元記事を表示

rails: 絶対に分かるhas_one :through関連付ける方法

### 前提
ユーザー・予約・住所の3つのレコードで“has_one :through“を使用し、アソシエーション関係を作りたいと思います。

### 実際のコード

“`ruby
class Booking < ApplicationRecord # ユーザーテーブルに対して一対一の関係を示している has_one :user # has_one :addressはユーザーテーブルにある has_one :addressのことである。 # throughは上記に書かれているhas_one :userのことである has_one :address, through: :user end ``` ```ruby class User < ApplicationRecord has_one :address, dependent: :destroy end ``` ```ruby class Address < ApplicationRecord belongs_to :user end ``` ### 要約 要約すると、``has_one through``の

元記事を表示

初心者向けVue.js × Railsでのアプリ作成(ToDoリスト編)

# はじめに

最近、Vue.jsとRailsでアプリを作っているのですが、Vue.jsとRailsでアプリを作る記事が少なく、勉強するのに少し不便でした。

Vue.js × Railsの記事が少ないと言っても探せばそれなりに見つかるのですが、私みたいなフロントエンドの事よくわかってない人間には、理解するのに時間がかかったりします。

ネットで記事をあさったり、そもそもJavaScriptが良くわかってないので、JavaScriptから勉強し直してみたり、Vue.js × Railsでアプリを作るだけにしては非常に遠回りしてしまいました。

## この記事について
この記事は、私みたいに**Vue.js × Railsのアプリ作成で遠回りな勉強をしている人をなくす事**を目的としています。

初心者向けにVue.js × Railsでアプリを作る記事を書いて、実装のイメージを掴んでもらえれば、私のような遠回りはなくなるはず。。。1度小さいアプリを作ってしまえば、理解度がグッと上がり、他の記事も読みやすくなるのできっと大丈夫!

また、この記事は私がRubyエンジニアなので、Rubyエ

元記事を表示

【Rails】Rails g model書き方

Rails g model書き方の備忘録です。

書き方

“`bash:ターミナル
rails g model モデル名 カラム:データ型
“`

モデル名

– 大文字で始める
– 単数形

カラム:データ型

半角スペースで連続で記載できる

“`bash:ターミナル
rails g model Post content:text image:string
“`

データ型

string:255文字までの文字列
text:255文字以上の文字列
integer:整数

元記事を表示

Ruby on Rails APIモードでいいね機能を実装する【初学者のReact×Railsアプリ開発 第6回】

#やったこと
* ログイン中のユーザーが、ポスト(投稿)に対して、「好き」「嫌い」「興味ない」を投票でき、更新もできるようにした。
* likesテーブルをpostsテーブル、usersテーブルとリレーションさせた。
* counter_cultureを使って、関連レコードの集計(postsテーブルのsuki_countなど)を行った
* PostgreSQL 12の新機能であるGenerated Columnを使用して、関連レコードの集計結果の計算(postsテーブルのall_count, suki_percent)を行わせた。

###完成したデータベースのイメージ(dbconsoleを使って確認)
“`
app_development=# select * from likes;
id | user_id | post_id | suki | created_at | updated_at
—-+———+———+——+—————————-+

元記事を表示

#Ruby or #Rails で unixtimestamp の数値を Time.zone の日時に変換する

# In Ruby need require

“`
require ‘active_support/core_ext’
“`

# Time

“`rb
Time.at(1580655600)
# => 2020-02-02 15:00:00 +0000
“`

# Timezone UTC

“`rb
Time.use_zone(‘UTC’) { Time.zone.at(1580655600) }
# => Sun, 02 Feb 2020 15:00:00 UTC +00:00
“`

# Timezone JST

“`rb
Time.use_zone(‘Tokyo’) { Time.zone.at(1580655600) }
# => Mon, 03 Feb 2020 00:00:00 JST +09:00
“`

# Original by Github issue

https://github.com/YumaInaura/YumaInaura/issues/2937

元記事を表示

#Ruby on #Rail / Convert unix timestamp to date with Time.zone ( UTC / JST Tokyo examample )

# In Ruby need require

“`
require ‘active_support/core_ext’
“`

# Time

“`rb
Time.at(1580655600)
# => 2020-02-02 15:00:00 +0000
“`

# Timezone UTC

“`rb
Time.use_zone(‘UTC’) { Time.zone.at(1580655600) }
# => Sun, 02 Feb 2020 15:00:00 UTC +00:00
“`

# Timezone JST

“`rb
Time.use_zone(‘Tokyo’) { Time.zone.at(1580655600) }
# => Mon, 03 Feb 2020 00:00:00 JST +09:00
“`

# Original by Github issue

https://github.com/YumaInaura/YumaInaura/issues/2936

元記事を表示

Rails6 rails consoleからカラムのデータ型を確認する

# 目的

– rails consoleからのカラムのデータ型の確認方法をまとめる

# 実施方法

1. railsアプリ名フォルダ直下で下記コマンドを実行してrails consoleを起動する。

“`terminal
$ rails console
“`

1. rails console上で下記コマンドを実行してカラムのデータ型を確認する。

“`
>モデルの名前.columns_hash[‘カラムの名前’].type
“`

元記事を表示

初心者によるプログラミング学習ログ 209日目

#100日チャレンジの209日目

twitterの100日チャレンジ#タグ、#100DaysOfCode実施中です。
すでに100日超えましたが、継続。

100日チャレンジは、ぱぺまぺの中ではプログラミングに限らず継続学習のために使っています。

209日目は

【Rails入門】エラーと仲良くなれるかもしれない開発手法【読み物】

どんもー、[@snskOgata](https://twitter.com/snskOgata)です。

今回はみんな大好き、エラーとの付き合い方を書いていこうかなと思います。
まあ、ちょっとした読み物として楽しんでもらえたらと思います。
 
 
対象読者は以下の2つに当てはまる人です。
**・エラーという存在が憎くて憎くてしょうがない
・Railsアプリを読み物を見ながら1, 2度作ってみたけど、実際に自分で何も見ずに作るとなったらどうやっていけばいいかわからない**
 
エラーが出るとどうしても怒られているような感覚になってしまいますが、
そうじゃなくて本当は、**エラーは正解への道筋を示してくれる相棒**のようなものだということを感じてくれると嬉しいです。

 
実際やっていくこととしては、
**エラーを吐かせながら、それに従ってアプリケーションを作っていく**ということをしていきます。
これによりひとつずつ着実に作業を進めることができます。
アプリの内容は、つぶやきを作成しその一覧を表示する簡単なアプリケーションです。
途中で大体もう流れがわかったら最後まで飛ばしてくれても

元記事を表示

Ruby on Rails APIモードのCRUD実装 【初学者のReact✗Railsアプリ開発 第5回】

# やったこと
* Ruby on RailsのAPIモードでCRUDを実装する(ただし、更新(U)はなし)

# 前回の記事
[Reactのreduxを用いたログイン処理周りの実装【初学者のReact✗Railsアプリ開発第4回】](https://qiita.com/dl10yr/items/e383df05d6b322785d3d)
#参考にさせていただいた記事
https://qiita.com/k-penguin-sato/items/adba7a1a1ecc3582a9c9

# 実装手順
###モデルとコントローラーの作成

“`
$ docker-compose run api rails g model post content:string
$ docker-compose run api rails g controller api/v1/posts
“`
生成されたマイグレーションファイルを編集します。

“`ruby:db/migrate/XXX_create_posts.rb
class CreatePosts < ActiveRecord::Migr

元記事を表示

【Ruby】ある整数の約数(要素の数、和)を求める

興味本位で書いてみた結果の、備忘録用です。
(メソッドの定義文については、幸運にもscivola様からアドバイスを頂きました。1行でのリファクタリングが可能です。是非コメント欄をご参照ください。)

“`ruby:divisor.rb
def divisor(num)
result = []
i = 1
while i <= num do remainder = num % i if remainder == 0 result << i end i += 1 end return result end puts "約数を算出したい整数を入力してください" num = gets.to_i r = divisor(num) puts r puts "約数の数は#{r.length}です" puts "約数の合計は#{r.sum}です" ```

元記事を表示

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

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

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

# 第7章 ユーザー登録
## 7.1 ユーザーを表示する
### ポイント
#### デバッグ
– `<%= debug(params) if Rails.env.development? %>`で画面にデバッグ情報を表示できる。
– `if Rails.env.development?`で開発環境のみに表示するよう制限している
– コントローラー内にdebuggerを記載して画面を表示すると、rails serverを起動しているコンソールがコマンド待受け状態になり、debuggerが呼び出された状態のままでrails consoleの操作を実行できる

#### Sassのミックスイン
@mixinで定義した内容を@includeで呼び出せる

元記事を表示

OTHERカテゴリの最新記事