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

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

Ruby 複数のeach配列の処理(eachの入れ子構造) 果物の名前とそれぞれの合計額が出力される コードを記述してください。

#問題
以下のように、果物の名前と値段が入った配列があります。
この配列を用いて、果物の名前とそれぞれの合計額が出力される
コードを記述してください。

#内容
“`
fruits_price = [[“apple”, [200, 250, 220]], [“orange”, [100, 120, 80]], [“melon”, [1200, 1500]]]

(出力)
appleの合計金額は670円です
orangeの合計金額は300円です
melonの合計金額は2700円です
“`

#回答
“`
fruits_price = [[“apple”, [200, 250, 220]], [“orange”, [100, 120, 80]], [“melon”, [1200, 1500]]]

fruits_price.each do |fruit|
sum = 0
fruit[1].each do |price|
sum += price
end
puts “#{fruit[0]}の合計金額は#{sum}円です”
end
“`

#自分なりの解説

元記事を表示

rails tutorial 【第二章】herokuプッシュ後に「Heroku | Welcome to your new app!」と表示されてしまう。

タイトル通りです。herokuにプッシュ後に「hell,world」が表示されずに「Heroku | Welcome to your new app!」と表示されてしまう問題の解決方法です。

原因

「git remote -v」で表示されたリモートリポジトリと実際にデプロイしているリポジトリが異なっていたため

解決方法

リポジトリ変更コマンド「git remote set-url heroku 新しいherokuのgitリポジトリURL」を実行して再度プッシュすると「hell,world!」が表示されました。

参考記事→https://teratail.com/questions/166277

元記事を表示

Ruby と Python で解く AtCoder ARC 059 C 最小二乗法

# はじめに
*[AtCoder Problems](https://kenkoooo.com/atcoder/#/)* の Recommendation を利用して、過去の問題を解いています。
AtCoder さん、AtCoder Problems さん、ありがとうございます。
# 今回のお題
*[AtCoder Regular Contets C – いっしょ](https://atcoder.jp/contests/arc059/tasks/arc059_a)*
Difficulty: 656

今回のテーマ、最小二乗法
# Ruby (全探索)
問題文を読んでもちょっと分かりづらいのですが、出力例の説明を読みますと、*[最小二乗法 -wikipedia](https://ja.wikipedia.org/wiki/%E6%9C%80%E5%B0%8F%E4%BA%8C%E4%B9%97%E6%B3%95)* で傾きが`0`の1次関数をイメージすることが分かります。
まずは、`−100≦a[i]≦100`と計算量が少ないので率

元記事を表示

【超初心者用】RubyでBINGOカードを作る手順を丁寧すぎるぐらいに書いてみた(2)

#はじめに

“`
B | I | N | G | O
8 | 16 | 36 | 57 | 67
10 | 24 | 33 | 58 | 72
2 | 17 | | 51 | 69
7 | 18 | 45 | 59 | 62
4 | 21 | 37 | 53 | 71
“`

今回は(2)で[前回の記事](https://qiita.com/baby-0105/items/fd717a05e435c656ccc3)に続き、[CodeIQに「ビンゴカード作成問題」を出題しました。みなさんの挑戦をお待ちしてます!](https://blog.jnito.com/entry/2015/02/09/101018)を参考にRubyでBINGOカードを作るを作ってみようと思いました。

しかしですね、インプットしかしてなかった人にはBINGOカードと言えど、これをアウトプットするのは多少なりとも苦戦するのではないでしょうか?

今回は、自分なりに順を追ってどのように作成していったかを記載していきます。
本当に、超初心者用にめちゃくちゃ丁寧に手順を記しています。

『そ

元記事を表示

マイグレーションファイルを作成してDBに反映させる

【開発環境】
macOS Catalina
バージョン 10.15.3
ruby 2.5.1
Rails 5.2.4.2
visual studio code
#マイグレーションファイルを作成してDBに反映させる
マイグレーションについてまとめました。

##マイグレーションファイルとは
マイグレーションファイルは、簡潔にいうとDBの設計図です。
一旦マイグレーションファイルに設計を書いて、それをDBに反映させることで、テーブル、カラムを作成できます。

##マイグレーションファイルも作成

“`
$ rails g migrate マイグレーション名
“`
こちらのコマンドでマイグレーションファイルを作成できます。
db/migrate下に作成されます。

モデルも一緒に作る場合

“`
$ rails generate model モデル名 カラム名:型 カラム名:型 …
“`
こちらのコマンドで作成できます。

例としてpostモデルのマイグレーションファイルをカラム名、型を指定して作ってみます。

“`
$ rails g model post title:str

元記事を表示

whereメソッドで生SQLを書く時の注意

文字列で生SQLを用意してwhereメソッドに渡す際
“”を渡すと、少々極端な例だが下記のようになる。

“`ruby
sql = “id = 1”
User.where(sql)
# 発行されるSQL
# SELECT `users`.* FROM `users` WHERE (id = 1)

sql = “”
User.where(sql)
# 発行されるSQL
# SELECT `users`.* FROM `users`
“`

エラーが出ず、不要なデータを取得するため注意。

元記事を表示

Railsでのコメント返信機能の実装

#Railsでのコメント返信機能の実装

Railsでコメントの返信機能を実装した際に実施した手順をまとめます。

## 目次
* [動作環境](#動作環境)
* [やりたいこと](#やりたいこと)
* [手順](#手順)
* [結果](#結果)
* [おわりに](#おわりに)

—————————————
## 動作環境
`OS : macOS Mojave 10.14.6`
`ruby : 2.6.3p62`
`rails : 5.2.4`

## やりたいこと
コメントに対して返信できる機能を実装したい。

完成イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526570/d4f28a4e-3079-ca2a-3c0f-f80d2f1550b4.png)

## 実装前のモデル

Commentモデルは1対多でUserモデルとPostモデルに紐付いている状態

“`ruby:schema.rb

create_table

元記事を表示

多対多の関係で【collection_check_boxes】を使用し複数のカラムを表示・保存・更新・削除できる様にする。

## はじめに

フォーム関連の**`collection_check_boxes`**を使用する際に
わからないことがたくさんあったので記録のためにこちらに記述して残しておきます。
多対多の関係を構築するモデルの作成から潜影蛇手していきますので少し長くなります。。。
学習を初めて4ヶ月の素人に毛が生えた者ですので、説明が至らないところがあると思いますが大目に見ていただけると幸いです。
## 環境
ruby 2.5.7
Rails 5.2.4.2
## やりたいこと
shopに対して複数のgenre(和食・洋食など)を保存・更新できる様にする。
スクリーンショット 2020-05-11 14.58.33.png
##多対多の関係(モデル)
今回はジャンル検索でお店を検索するという機能を作りたいため、
shopに様々

元記事を表示

Tech Canpのドリルって復習しづらくね?

## 近況報告
 先日,テック卒業後初めての面接に行ってきました。そこでの面接でとても違和感がありまして。まず,志望動機が全く聞かれなかったんですね。なんででしょうね。自分が考えたのは2点。この面接自体は他のことを聞く目的だったこと。もう1つは質問前に落第を受けていたこと。実際面接というよりは面談に近く,かなりラフで,自分の会社を話すというより業界について話す感じでした。それと,自分の履歴書がテックのテンプレートのままだったので,その企業への志望動機が記載されていなかったんですね。その時点で切られたのでしょうか。。。
 とりあえず反省点があっただけでも収穫なので次に活かす!

# 本題
 テックキャンプのドリルは受講料の半分くらい価値があると先輩が言っており,実際全くわからなかった問題もおおいので復習を始めたのですが,**ページ移動がめんどくさい!**
・スプレットシートから問題ウィンドウへ
・問題を提出するとJSのボタンが表示され別のページへ
・解答ページはこちらの「こちら」にしかタグがないためクリックが面倒
・自己採点終了ボタンを押すとマイページへ。。。以後繰り返し

# 対処法

元記事を表示

『ancestrey』indirect_idsメソッドの面白い発見!?

#はじめに
ancestryというgemをインストールすると使用できるindirect_idsメソッドの面白いところ見つけたんで紹介します:v_tone4:

ancestry?ancestryは知ってるけどindirect_idsってなんだ?って方は:point_down_tone3:の方の記事がすごくわかりやすいので是非覗いてみてください!!

https://qiita.com/Rubyist_SOTA/items/49383aa7f60c42141871

##紹介

おもろい.png

おもろくない.png【Ruby】配列の組み合わせと順列に関するメソッド

Rubyのロジック問題を解いていて配列の組み合わせと順列に関する処理の重要性を感じたので、
アウトプットとして簡単にまとめてみました。

#combinationメソッド
・組み合わせを求める
・引数で各組み合わせのサイズを指定

“`ruby
a = [“a”, “b”, “c”]
p a.combination(2).to_a
#=>[[“a”, “b”], [“a”, “c”], [“b”, “c”]]
“`

重複をありにしたい場合は、
`repeated_combination`とする。

“`ruby
a = [“a”, “b”, “c”]
p a.repeated_combination(2).to_a
#=>[[“a”, “a”], [“a”, “b”], [“a”, “c”], [“b”, “b”], [“b”, “c”], [“c”, “c”]]
“`

#permutationメソッド
・順列を求める(※順列の順序は保証されない)
・引数で各順列のサイズを指定

“`ruby
a = [“a”, “b”, “c”]
p a.permutation(2

元記事を表示

【開発ログ⑥】メインとなるビューを作りました。

# 前提について
はじめまして、
プログラミングスクールに通ういりふねと申します。この記事は、スクールの課題である個人アプリの開発の記録を書くことで、自身のアウトプットに利用しています。もし、読んでいただけた方がいましたら、フィードバックをしていただけたら嬉しいです。

開発するのは「有給休暇管理ツール」です。仕様は過去記事をどうぞ。

アプリはデプロイまで行いますが、サービスとして提供するものではありません。あくまでも自学習の一環ですので、ご理解下さい。では本題へどうぞ。

# 今回実施する内容
前回までで、rootパスでアクセスし、「index.html.haml」を表示させることができました。今回は、この「index.html.haml」を編集し、メインのページを完成させます。作成するページは以下の通りです。
– ログイン中、常に表示されている左カラム
– メインページの有給休暇一覧表(内容は仮データ)
– メインページの有給休暇消化ログ

# 有給休暇一覧完成!!
まずは、メインページ部分です。左のカラムは、上部が社員の検索を行う検索窓、虫眼鏡のマークにsubmitを設定してい

元記事を表示

【Ruby】インスタンスメソッドからクラスメソッドへ変更

#はじめに
本来、クラスメソッドとして定義するべき所をインスタンスメソッドで定義してしまっていたので、変更を行った。

#インスタンスメソッド(例)

・インスタンスメソッドの定義
app/models/hoge_fuga.rb

“`ruby
class HogeFuga
def method_name
puts “インスタンスメソッドが呼び出される”
end
end
“`

・インスタンスメソッドの呼び出し
app/controllers/piyo_controller.rb

“`ruby
class PiyoController < ApplicationController def piyo hogefuga = new.HogeFuga # インスタンス生成 hogefuga.method_name #=> “インスタンスメソッドが呼び出される”
end
end
“`

インスタンスメソッドの場合は、
「newメソッド」で、インスタンスを作ってから、
`インスタンス名.method_name`ですね。

#クラスメソッ

元記事を表示

Ruby on Railsでweb-consoleを使う方法

プログラム勉強中です。自分の備忘録として投稿します。

# web-consoleを使う方法
“`config/environments/development.rb
Rails.application.configure do
config.web_console.whitelisted_ips = %w[127.0.0.1 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16]
end
“`

元記事を表示

【Rails】ページごとに表示を変える

# 目的
ページごとに共通部分を変えたり、ユーザーの状況によってページ表示される内容を変えたい
# 前提
deviseを導入している(ユーザー がログインしているか?で使う)

# 色々なパターン(具体例を提示)
①ユーザーがサインインしているか?で条件分岐
②訪れているページがどこか?で条件分岐
③コントローラーごとに共通部分を分ける
④アクションごとに、共通部分を分ける

他にも色々あるとは思いますが、自分が試した物を書きます。

# 実装例①ユーザーがサインインしているか?で条件分岐

“`html.haml

– if user_signed_in?

“`
これはよく使うのが、サインインしていれば新規投稿ボタンが表示されるなど
上記で囲み

user_signed_in?
でログインされていたら表示するという使い方をする

# 実装例②訪れているページがどこか?で条件分岐

### root_path かどうか
current_page?(root_path)

### /users/:id が current_user かどうか
current_

元記事を表示

kmyacc を独立させました(Fork 後)

# kmyacc

[前回](https://qiita.com/Kray-G/items/c77f2d5401c31290bfcd) fork しました、と報告した kmyacc ですが、オリジナルは10年程度メンテされていなさそうだったので、何かあった場合に自分でメンテできるようにするために独立したリポジトリに変更しました。

* https://github.com/Kray-G/kmyacc
* kmyacc 本体のライセンスはオリジナルと同様に GPL 2.0 です。
* ただし、kmyacc で出力したパーサー・ファイルの利用は自由(Public Domain)です。
* これもオリジナル同様。

### リリース

リリースしておきました。ビルド済 Windows 用の実行ファイルを zip でアップロードしてあります。

* v4.1.4+update.1
* https://github.com/Kray-G/kmyacc/releases

## 修正

新たに以下の修正を実施。

* Windows では kmyacc.ex

元記事を表示

Docker for Windows で Rails 6 + MySQL 8 の開発環境を構築する

## 背景
Windows で Rails の開発環境を作ろうとすると native extension などの関係で `rails new` した直後ですら `bundle install` が動かなかったりするので自分は結構ヤキモキすることが多いです。

解決策として `rails new` から `rails server` まで全て Docker のコンテナ内で完結するようにしているのですが、忘れがちになってしまう作業が多いのでまとめました。

`Docker for Windows` と掲げていますが `Docker for Mac` でも問題ないと思います。
※ が、Macの場合は素直に構築できると思うので Windowsユーザーをターゲットにしています

## ターゲット
– 初学程度の Docker/docker-compose の知識がある人
– Windows で Rails の開発環境をしたい人

## ゴール
– Windows で Rails 6 + MySQL 8 の開発環境が構築できる
– Ruby 2.7
– Rails 6.0.3
– My

元記事を表示

『フリマアプリ』カテゴリー別商品表示ページに遷移させる…前の記事のリファクタリング

#はじめに
https://qiita.com/mugioka/items/e079219814daee3591ae
前回の記事:point_up_tone4:にてクソみたいに汚いコードを書いてしまっていたので少々リファクタリングをしました:relaxed:

#開発環境

“`
macOS :Catalina 10.15.4
Ruby :2.5.1
Ruby on Rails:5.2.4.2
“`

###実際のコード

“`ruby
def parent
grandchildren_id = @category.indirect_ids
find_category_item(grandchildren_id)
end

def child
grandchildren_id = @category.child_ids
find_category_item(grandchildren_id)
end

def grandchild
@items = []
category_item

元記事を表示

form_withヘルパーのlabelの勘違い【ズボラな初学者向け】

#はじめに
form_withヘルバーを使った学習中に些細なミスでテストが通らなかったため、自戒のためにもここに記しておきます。

#lavelの部分に注目
記述したform_withヘルパーのコードは次のとおりです。どこが間違っているかわかりますか、、、

“`php:

ユーザー登録

<%= form_with model: @user, local: true do |f| %>

<%= f.label :last_name %>
<%= f.text_field :last_name, class: 'form-control' %>
<%= f.label :first_name %>
<%= f.text_field :first_name, class: 'form-control' %>

元記事を表示

【超初心者用】RubyでBINGOカードを作る手順を丁寧すぎるぐらいに書いてみた(1)

#はじめに

“`
B | I | N | G | O
8 | 16 | 36 | 57 | 67
10 | 24 | 33 | 58 | 72
2 | 17 | | 51 | 69
7 | 18 | 45 | 59 | 62
4 | 21 | 37 | 53 | 71
“`

今回、[CodeIQに「ビンゴカード作成問題」を出題しました。みなさんの挑戦をお待ちしてます!](https://blog.jnito.com/entry/2015/02/09/101018)を参考にRubyでBINGOカードを作るを作ってみようと思いました。

しかしですね、インプットしかしてなかった人にはBINGOカードと言えど、これをアウトプットするのは多少なりとも苦戦するのではないでしょうか?

今回は、自分なりに順を追ってどのように作成していったかを記載していきます。
本当に、超初心者用にめちゃくちゃ丁寧に手順を記しています。

『そんな基本的な事・・・』と思わずみていただけると幸いです(笑)

そして何よりも、**手順も考え方も無茶苦茶ではあると思います。**

試行錯誤

元記事を表示

OTHERカテゴリの最新記事