RailsとReactの基本メモ羅列

Ruby, Rails09 July 2021

Rails

Code

ブロック

Pythonのデコレータみたいなかんじ 引数の塊(do ~ end 、もしくは{}で囲われた間)

map.with_index

Pythonのenumurateみたいなかんじ

users = ["taro", "jiro", "saburo"]
users.map.with_index { |user, i| "#{i+1}: #{user.name}" }
# 0: taro
# 1: jiro
# 2: saburo

初期値の指定

users.map.with_index { |user, i| "#{i+1}: #{user.name}" }
# 1: taro
# 2: jiro
# 3: saburo

ClassやModuleの同名

同名で定義すると同じClassないしModuleに対しての追加として扱われる(どのファイルからでもメソッド追加などができる)

括弧省略

  • rubyはメソッドを実行する時などに括弧を省略できる。まじで最初戸惑う。
  • 引数を渡す場合も以下の2通りの書き方がある
def hoge(arg)
  p arg
end

# 結果は同じ
hoge("kakko")
hoge "kakko"

参考

classやmodule名

ファイル名はスネークケース、クラスやモジュール名はスネークケースをアッパーキャメルケースにしたものにすること

Routes

application.html.erb

/app/views/application.html.erb

まずはこのHTMLが呼び出され、その後に適応したファイルを参照しにいく

定義ファイル

config/routes.rb

draw

(例)admin

Rails.application.routes.draw do
  draw "admin"
end

drawで以下パスのファイルをrouting設定として読み込むことができる

/config/routes/admin.rb

デフォルトで参照するテンプレートのPath

app/views/<CONTROLLER_NAME>/<METHOD_NAME>.html.erb

renderやredirect_toなどが未記載の場合はここを参照しに行く

予約変数

present?, nil?, empty?, blank?

基本的に変数の中身の存在確認をしている 参考

Model

belongs_to

参照元から参照先への関係を定義

has_many

1:多の関係を定義

Class User
has_many :posts
end

Class Post
belong_to :user
end

という定義をした場合、新規にPostを作成したい場合は

@post = @user.post.create

で使用することができる。つまり、単に関係性を定義するだけではなくプロパティとして使用することが可能になる

scope

実行したい処理を予め定義しておける

(例)削除フラグがfalseのレコードのみ取得

scope :active, -> { where(is_deleted: false) }

dependent

一緒に削除したりする 参考

accepts_nested_attributes_for

子モデルも同時に取り扱う 参考

merge

merge先のscopeが使える 参考

class_name

アソシエーションの名前を変えたい時 参考 参考

delete, destroy

  • delete
  • リレーションは削除しない
  • destroy
  • リレーションも削除する

joinsの時の単数形、複数形

参考

buildメソッド

リレーションのある子モデルのインスタンスを生成するときに使用 参考

build_hoge 参考

has_oneでbuildすると消える

railsのaccepts_nested_attributes_forでhas_oneな時の注意点

レンダリング

html_safe, raw, <%==

基本的に変数展開に使用している 参考

form_for

既存のレコードならupdate, 新規ならinsert(create?)してくれる

参考

render partial

  • 部分的なテンプレ=と呼び出しに使用する
  • テンプレートファイルのファイル名の先頭は_(アンダーバー)になる 参考

gem

device

ログイン認証周りを楽にしてくれる 参考 参考

bundle exec

bundle execをつけると、 Gemfile.lockの内容に従って各gemのバージョンが決定される 参考

テスト

rspec

基本 subject

おまけ

order by field ~

指定した順番でそーとしたい時 参考

React

state

状態の管理をするもの。各画面でこのstateの値を参照することで、データ共有ができる 参考

tags: Ruby, Rails