TECH EXPERT 47日目

TECH::EXPERT

チーム開発。今日はancestryとクレジット決済用のgemを導入。

rails

form

date_select

= f.date_select :birthday, start_year: 1900, end_year: Time.current.year, use_month_numbers: true, default: { year: 1990, month: 1, day: 1 }

date_selectフィールドにした場合、paramsに名前(1i), 名前(2i), 名前(3i)という形で格納される。

Parameters: {"utf8"=>"✓", "authenticity_token"=>"edKyQetKU/KGujw==", "nickname"=>"", "birthday(1i)"=>"1990", "birthday(2i)"=>"1", "birthday(3i)"=>"1", "commit"=>"次へ進む"}

一旦、date型に変換してparamsにマージする。

birthday = Date.new(params[:"birthday(1i)"].to_i, params[:"birthday(2i)"].to_i, params[:"birthday(3i)"].to_i)
params.permit(:nickname).merge(birthday: birthday)

dateクラス

date = Date.new(2011, 4, 1) 

Date.today

今日を取得

date = Date.today

.last()

Items.last
id順で最後のidのインスタンスを取得

Items.last(4)
最後の4つのインスタンスを取得

association

dependent: :destroy

親が削除された際の挙動を決める。
destroyの場合は削除。

has_many :shippings, dependent: :destroy

devise

session

ハッシュで情報を保持している。pramsと違い、ページ遷移でデータは消えない。
deviseの機能としては主にuser_idを持たせているが、単なるハッシュのため、任意の値を入れることができる。

session[:name] = "田中"
単なるハッシュなので以下でもOK.
session = {name: "satou", email: "ggg@ggg"}

ancestry

カテゴリ等の多階層にわたるテーブルの設計を行うgem。
インスタンスに対して.childrenを繰り返すことで多階層なテーブルを作成できる。

category = Category.create( name: "レディース")
child = category.children.create(name: "トップス")
child.children.create([{name: "Tシャツ/カットソー"},{name: "パーカー"}}])

逆に親を参照する際には.parentを使えば参照できる。

child.parent.name

github

rebase

ブランチの位置を指定したブランチの先頭へ移す。

コメント