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

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

day_first

# hello_world
最初のruby codeです。

“`ruby:hello_world.rb
puts “Hello world!”
“`

# rubyの特徴
1. rubyはinterpreterなので、compileがいりません。
2. debugの代わりにpします。
3. testしながら開発していきます。
4. オブジェクト指向なので、’.’で振る舞いをつぎつぎ付け足していきます。

status bar状態をしめすバー
(internal, 内部)exporer 探検、検索
inter nation
inter net
external外部
side bar
menu bar

元記事を表示

こんなソースコードはイヤだ-固有名詞と変数名

プログラムのソースコードのより良い書き方をまとめていこうと思います。

# 固有名詞と変数名

“`sample.kt
class iPhoneManager {}
fun getFaceBook(){}
“`

“`sample.rb
you_tube_api_limit = 100
“`

[どのようにリファクタリングできるのか](https://www.sentohsharyoga.com/ja/bad_source_code/entry/proper_noun_and_variable_name)

元記事を表示

Ruby on Rails6 実践ガイド cp16~cp18 【メモ】

## はじめに
この記事の筆者はプログラミングを学習し始めたばかりの初心者です。間違いがあれば指摘していただけると幸いです。

## 概要
この記事は[Ruby on Rails6 実践ガイド](https://book.impress.co.jp/books/1118101134)を読んで学んだことを自分用のメモとして記録したものです。抜粋してピックアップするので読みづらいと思われます。すいません。
この本には、続編の[機能拡張編](https://book.impress.co.jp/books/1118101135)もあり、記事を書いている段階で二冊とも学習を終えています。復習もかねて記事を書いていくつもりです。
18のチャプターに分かれているので、見出しごとに区切っていきます。

前の記事
[Ruby on Rails6 実践ガイド cp4~cp6 【メモ】](https://qiita.com/nizi24/items/aca9a745ccda08081eeb)
[Ruby on Rails6 実践ガイド cp7~cp9 【メモ】](https://qiita.com/niz

元記事を表示

rails-tutorial拡張編(userとmicropostの検索機能)

#userの検索機能を作るぞ

まずはransackというgemをbundle installする。

次にユーザー検索用のフォームのパーシャルを作成する。

“`app/views/users/_search_form.html.erb
<%= search_form_for @q do |f| %>
<%= f.label :name_cont, 'User Search' %>

<%= f.text_field :name_cont, placeholder: "Enter username...", class: 'form-control' %>

<%= f.submit 'Go', class: "btn btn-primary" %>

<% end %>
“`

このパーシャルを後ほどuserのindexアクションのviewに埋め込む

元記事を表示

rails-tutorial第14章

#ユーザーをフォローする

まずはRelationshipモデルを作っていこう

$ rails generate model Relationship follower_id:integer followed_id:integer

作成されたマイグレーションファイルにインデックスを書き足していく。

“`db/migrate/[timestamp]_create_relationships.rb
class CreateRelationships < ActiveRecord::Migration[5.0] def change create_table :relationships do |t| t.integer :follower_id t.integer :followed_id t.timestamps end add_index :relationships, :follower_id add_index :relationships, :followed_id add_index :

元記事を表示

【初心者向け】railsを使ってコントローラーの作成する手順

ドットインストールでrailsのコントローラーの作成方法について勉強したのでまとめておきます。

この記事はこんな人におすすめ

  • プログラミング学習を始めたての人
  • ドットインストールでプログラミング学習をしている人
  • railsでのアプリケーションの作成方法について復習したい人

と書きましたが、自分の復習用というのが裏の目的なのでところどころ言葉遣いなど伝わりにくい箇所などあるかもしれません。正しい情報をお伝えするように心がけますのでなにか気になる点がございましたらご指摘いただければと思います。

前提条件

  • rails newでアプリケーションを作成済み
  • 作成したアプリケーションのディレクトリでrails sでサーバーを立ち上げ

ここまでは先にやっておく必要があります。

コントローラーの作成

“`
rails g controller posts #postsはコントローラー名
“`
これでうま

元記事を表示

ruby ifを1行で書く方法 まとめ by 初心者

## rubyのifを1行で各方法

### true のみの場合
if a>0
puts a
end
なら

puts a if a>0

### if else の場合
if a>0
puts a
else
puts “”
end
なら

puts a>o ? a:”0″
みたいです。

元記事を表示

attr_accessorが必要な理由と、不要な理由(Railsさんありがとう): Railsチュートリアル備忘録 – 9章

以前にも出てきた`attr_accessor`
あまり理解できていなかったので調べてみた

##理解したこと
– `attr_accessor`の役割
– `attr_accessor`を意識せずにここまでこれた理由(Railsさんありがとう)

##躓いたのはこれ
2行読んで続きを放棄したくなった

>Userモデルには既にremember_digest属性が追加されていますが、remember_token属性はまだ追加されていません。このためuser.remember_tokenメソッドを使ってトークンにアクセスできるようにし、かつ、トークンをデータベースに保存せずに実装する必要があります。そこで、6.3で行ったパスワードの実装と同様の手法でこれを解決します。あのときは仮想のpassword属性と、データベース上にあるセキュアなpassword_digest属性の2つを使いました。仮想のpassword属性はhas_secure_passwordメソッドで自動的に作成されましたが、今回はremember_tokenのコードを自分で書く必要があります。これを実装するため、4.4.

元記事を表示

railsで新規ユーザー作成中unknown attribute ‘password’ for User.と怒られた

###
自分ではじめて考えたあるwebサービスをrailsで作成中,ユーザーの新規作成のところでいきなり怒られてしまった

“`
unknown attribute ‘password’ for User.

def create
@user = User.new(
name: params[:name],
email: params[:email],
password: params[:password]
“`

##原因究明
パスワードカラムがないといわれたのでUsersテーブルのカラムを調べてみる

“`
$ rails console
$ User.new
Loading development environment (Rails 6.0.3.1)
irb(main):001:0> User.new
(7.5ms) SELECT sqlite_version(*)
=> #

元記事を表示

Railsの使い方

# プログラミングの勉強日記
2020年6月8日 Progate Lv.85
授業での課題でRailsを使った

##昇順降順の並び替え
 データを昇順(asc:小さい順)、降順(desc:大きい順)に並べるときには`order`を使う。

“`ruby
books = Book.order(“id”: “asc”) #idを昇順に並べる
books = Book.order(“id”: “desc”) #idを降順に並べる
“`

##取得する数を指定する
 取得する値の上限を指定するには、`limit`を使う。

“`ruby
books = Book.limit(100).order(“id”: “desc”) #100個まで値を取得する
“`
例のように`order`は`limit`とドット(`.`)を使うことで、1行で記述できる。

##すべての数を取得する
 limitとは反対にすべての値を取得するときには`all`を使う。

“`ruby
books = Book.all
“`

##欲しい値を取得する
 テーブル内の条件に一致した値を取得するためには`

元記事を表示

DockerでRails6の環境構築を行う方法

##はじめに
DockerでRail6の環境構築を行う方法を紹介します。
Rials6からWebpackが導入され、Rails5とは少し手順が異なるのでそこも考慮しました。

Docker公式ページ [Quickstart: Compose and Rails](https://docs.docker.com/compose/rails/)

##環境
Docker3
Rails6.0.3
Ruby2.7.1
DB:PostgeSQL

##1. 必要なファイルを作成
今回は”myapp”という名前のフォルダに環境構築していきます。
名前を変える場合は以後、”myapp”を適宜変更してください。

これから作成するファイル構成は下記の通りです。

“`:ファイル構成
myapp
–Dockerfile
–Gemfile
–Gemfile.lock
–entrypoint.sh
–docker-compose.yml
“`

まずはフォルダを作成します。

“`:ターミナル
$ mkdir myapp
$ cd myapp
“`

### 1.1

元記事を表示

【Rails】コメント機能の実装手順メモ

## 始めに
投稿に対してコメントできる機能に関する備忘録です
## 前提
__環境__
 Ruby 2.6系
 Rails 5.2系

__ライブラリ__
 devise
 Slim

__上記環境のRailsアプリ雛形__
 [Railsアプリケーションセットアップして、deviseとSlimを導入する手順](https://qiita.com/kurawo___D/items/5fad1e08ae29c0bc5a45)

__↓コメント機能の実装後イメージ↓__
![ezgif.com-video-to-gif (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606750/5ebbc9cc-2edb-c022-0080-4ad21c87d244.gif)

## 実装

###1.モデル設計
![スクリーンショット 2020-06-09 21.23.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606

元記事を表示

routes.rbのcollectionとmemberについて詳しく学習

##そもそもcollectionやmemberってどんなときに使うか?
**[結論]**
「resourcesでroutingを設定しているとき、resourcesメソッドでは`自動で生成されない`actionへの
ルーティングを設定するとき」に使用する。

通常RailsのWebアプリケーションの中でルーティングを設定する際には7つのアクションを
自動生成してくれる`resources`メソッドを使用することが多いが、例えば投稿検索機能などを新たに追加で実装する際にはresourcesで設定できる7つのアクション以外にルーティングを生成しなければならない。そこでこういった場合に`collection`や`member`を使用する。

##それではcollectionとmemberにはどんな違いがあるか?
**[結論]**
ルーティングを設定する際に**「:id」を含ませるかどうか**の違い。

|||
|:———|:———————|
|collection|ルーティングに「:id」がつかない|
|member |ルーティングに「:id」が

元記事を表示

Precompiling assets failed. エラー

Precompiling assets failed.
のエラー。

production.rb

config.assets.js_compressor = :Uglifier
の部分を
config.assets.js_compressor = Uglifier.new(harmony: true)
に変更。

いつも通りgit addとgit commitすると問題なく通った。

元記事を表示

Rails RoutingErrorを捕捉する

#RoutingErrorを捕捉する

この記事は以下の記事の続きとなります[Railsでエラー画面を作ろう](https://qiita.com/akilax/items/e59e58c0c1f70c7fe96e)

クラスメソッドrescue_fromはアクションで発生した例外を捕捉するためのものなので、ルーティングの段階で発生するための処理は捕捉できません

ということでconfig/initializersディレクトリのファイルを作成する必要があります。

request.path_infoの値によって呼び出すアクションを振り分けています。

404 => not_foundアクション
422 => unprocessable_entity
それ以外 => internal_server_error

その後ErrorsControllerにactionを引数として渡して呼び出しています。

“`exceptions_app.rb
Rails.application.configure do
config.exceptions_app = ->(env) do

元記事を表示

【Rails】日本人最長の苗字 (バリデーション)

# 日本人最長の苗字(バリデーション)

### 目次
1. 日本で最長の苗字を調べるにあたって
2. 日本人最長の苗字
3. バリデーション設定

## 1. 日本で最長の苗字を調べるにあたって
カスタマー用のお問い合わせフォームの作成していました。
フロント側の実装が完了し、バックエンドでのバリデーションの実装に取り掛かりました。
お問い合わせフォームの項目に必ずしもある **苗字・名前** のバリデーションの最大値を決める際に手が止まりました..
**苗字・名前** の最大値なら15文字くらいで大丈夫かな?(なんかモヤモヤする)

..ていうか調べれば、解決できそう!
日本人最長の**苗字・名前** について調べました。

## 2. 日本人最長の苗字
日本人最長の **苗字・名前** について調べたところ、
苗字の最長は **5文字** (漢字)、読みでは **8文字** あるということがわかりました。

####下記のサイトを参考
https://name.sijisuru.com/Columns/longname

## 3. バリデーション設定
苗字の最長がわかった

元記事を表示

現役消防士によるポートフォリオ

##はじめに
ご覧いただきありがとうございます。

こんにちはむらかみです。
現在、27歳で大阪の消防士として勤務しています。

コロナ期間中は、リモートという最先端な働き方とはうらはらにしっかり消防署で勤務をしておりました。コロナ期間中は救急件数もいつも以上に少なく、やればできるね救急車の適正利用ということを肌でひしひしと感じる日々を過ごしました。(最近はまた増えてる)

そんな中、約1ヶ月の開発期間を経て、Webサービスをデプロイできたので、今回はなぜ僕がこのサービスを作ろうと思ったのか、どんな背景があるのか、そもそもプログラミングを初めたきっかけなどを記録として残しておこうと思い執筆しました!
ぜひ最後まで読んでいただけると嬉しいです。

##自分の状況
まず前提として、自分の現時点の状況を書き留めておこうと思います。

・現在、消防士として勤務
・スタート時は、HTML?CSS?という状態
・学習期間は5ヶ月程、その内開発期間1ヶ月程
・独学(4月からSlackのRubyコミュニティに参加)

##今回つくったもの

サービス名:「FIREノート」
https://www.f

元記事を表示

[Rails]多階層カテゴリーから商品を検索・一覧表示する機能

# 概要
以下の画像のように、選択したカテゴリーに所属する商品を一覧表示する機能です。
カテゴリーは多階層になっていて、下の階層に行くほど絞り込んだ検索が出来るようになります。
カテゴリーはgemのancestryを用いて作成しています。
![d3a7f46ab307f384f41fe88f3917826b.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/619967/295b0c70-83ac-bcf6-f87e-5c683a855121.gif)

# 前提
・ancestryを用いてカテゴリーテーブルを作成している。
・カテゴリー:商品 = 1:多の関係になっている。
・商品モデルのcategory_idには、最下層のカテゴリーidが登録されている。

この記事のアプリでは3階層のカテゴリーを使用しています。
また、この記事内では一番上のカテゴリーを「親カテゴリー」、その下の階層を「子カテゴリー」、
そのまた下を「孫カテゴリー」と表現しています。

# 参考記事
ancestryの導入方法については

元記事を表示

Ruby on Rails6 実践ガイド cp13~cp15 【メモ】

## はじめに
この記事の筆者はプログラミングを学習し始めたばかりの初心者です。間違いがあれば指摘していただけると幸いです。

## 概要
この記事は[Ruby on Rails6 実践ガイド](https://book.impress.co.jp/books/1118101134)を読んで学んだことを自分用のメモとして記録したものです。抜粋してピックアップするので読みづらいと思われます。すいません。
この本には、続編の[機能拡張編](https://book.impress.co.jp/books/1118101135)もあり、記事を書いている段階で二冊とも学習を終えています。復習もかねて記事を書いていくつもりです。
18のチャプターに分かれているので、見出しごとに区切っていきます。

前の記事
[Ruby on Rails6 実践ガイド cp4~cp6 【メモ】](https://qiita.com/nizi24/items/aca9a745ccda08081eeb)
[Ruby on Rails6 実践ガイド cp7~cp9 【メモ】](https://qiita.com/niz

元記事を表示

RailsでJsonカラムのvalidationしてないエンジニアいますかっていねーか、はは

Railsで[json-schema](https://github.com/ruby-json-schema/json-schema)を使ったJsonカラムのバリデーションについての記事です。

## まえがき
MySQLにJsonカラムが追加されて久しいですよね。

**Railsのデフォルトだと無さそうだけど、Jsonのバリデーションをちゃんとやりたい!**
でも、カスタムメソッドで愚直に書こうとすると…

### 愚直なカスタムメソッドの例

“`ruby:some_model.rb
class SomeModel < ApplicationRecord validate :verify_timetable private def verify_timetable errors.add(:timetable, '配列ではありません') && return unless timetable.is_a?(Array) timetable.each do |el| errors.add(:timetable, '要素がHashではありま

元記事を表示

OTHERカテゴリの最新記事