最近覚えたものを忘れないように大変雑にまとめていく
#テスト
assert系 → 予期した結果
refute系 → 「〜にならないこと」
#FakerでDB上にサンプルUserを生成する
99.times do |n|
name = Faker::Name.name
email = "example-#{n+1}@rails.jp"
password = "password"
User.create!(
name: name,
email: email,
password: password,
password_confirmation: password
)
end
$rake db:migrate:reset
$rake db:seed
でおk。
#toggle!メソッド
user.toggle!(:admin)
→ admin属性の状態をfalseからtrueにする
#
if !user_signed_in?は
unless user_signed_in?
if not user_signed_in? (推奨されていないらしい)
とも書ける
#
'aria-haspopup' => 'true', 'aria-expanded' => 'false'は
aria: { haspopup: true, expanded: false}
と代替できる。(後者の方がスッキリする)
条件式 ? 真の値 : 偽の値
以下と同義
if @user.nil?
真の値
else
偽の値
end
# sessionのフォーム
= form_for(:session, url: login_path) do |f|
sessionはインスタンスを持たないため、リソースとそれに対応するURLを指定する
#クッキーとは情報を保存するもの
#sessionとは接続〜切断までの一連の流れ
ログインをnewとcreate
ログアウトはdestroyを用いている
#password_digestとは
ユーザの入力したpasswordをそのまま保存するのは危険! ので、passwordを暗号化するもの
migrationファイルの例
def change
add_column :users, :password_digest, :string
end
# DBでmysqlを扱う方法
$ rails new sample_app -d mysql
gem に mysql追加(version指定しないとほぼ落ちる)
$ rake db:create
$ rake db:migrate
これでおk。
$ rails db
> show tables;
> select * from users;
> desc users;
> exit
みたいな感じ
#git でsshのキーチェーンの設定方法
赤文字がキーチェーンとなる
clone などする際には
$ git clone git@github.com:example/example.git
とする。(:の前までがキーチェーンの範囲)
#メタプログラミング(黒魔術)とは
”Rubyの最大の特徴で、簡単に言うとコードを生成するコードのこと”(かなり奥が深いらしい、抽象的な記法を使ってコードを書くことにより動的にコードを生成する。)
一見コードをみただけでは何を書いてるのかわからないもの、ターミナル上で引数などを指定し、実行されるまで何が出力されるかわからないもの。
#低レベルな知識
コンピューターに近いものの知識らしい(Linuxなど)、高レベルな知識は人間に近いものらしい。低レベルな知識によって技術者の差が出る。
- ファイルや標準入力から正規表現でマッチする行を探し出すコマンド
- ログファイルの中から特定のログを探し出したり、ソースコードのあるディレクトリで特定のクラス、メソドなどを定義、呼び出しているところを探したりいろいろな目的で使う.
ex) grep "sample" sample.txt
=> sample
# 複合キー
複数項目で1セットな主キー
gem ' composite_primary_keys '
例)reservationsに複合キーを持たせる(user_idとevent_idで)
reservationのmigrationファイル
def change
create_table :reservations, id: false do |t|
t.integer :user_id
t.integer :event_id
t.timestamps null: false
end
execute 'ALTER TABLE reservations ADD PRIMARY KEY (user_id, event_id);'
end
その後
$ rake db:migrate(ここで結構エラー出ます、大体がmigrationファイルでだぶってたりするのが原因なので削除したりして作り直したりしました。)
mysql> desc reservations;
+------------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+----------+------+-----+---------+-------+
| user_id | int(11) | NO | PRI | NULL | |
| event_id | int(11) | NO | PRI | NULL | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
+------------+----------+------+-----+---------+-------+
のようにuser_idとevent_idの2つがprimary keyとなる
参考
シンタックスシュガーについて