deviseのemailの代わりにusername使うときのエラーメッセージ
私はAuthlogic派みたいなことを先日申し上げましたが、deviseも触らないとねって思いまして。
deviseカスタマイズ第一弾として、いろんなサイトを見ながらデフォルトのemail+passwordをusername+passwordに頑張って変えてみました。ちゃんとサインアップ・サインイン出来て喜んだのですが、わざとパスワードミスってみたら
"Invalid email or password."
とかalert飛ばしてきやがったんですよ。
emailってなんだよ!ケェッ!!これだからdeviseは嫌いだぜ!(*`ε´*)ノ_彡☆バンバン!
怒りのgrep!
$ grep "email or password" ./ -R ./config/locales/devise.en.yml: invalid: "Invalid email or password." ./config/locales/devise.en.yml: not_found_in_database: "Invalid email or password."
修正!
2列AUTO_INCREMENTするときはInnoDBじゃダメ
ですってよ奥さん。
結論はこれなんで、以上ですって感じですがいちおう。
MySQLでこんなテーブルを作りたいとき
col1 | col2 |
---|---|
1 | 1 |
1 | 2 |
1 | 3 |
2 | 1 |
2 | 2 |
col1 has many col2で、col2 belongs to col1みたいな。
col1とcol2のペアがユニークで、col1だけ指定してinsertするとcol2は勝手にAUTO_INCREMENTされてほしい。
ということで、PRIMARY KEY(col1, col2)してcol2にAUTO_INCREMENTを設定すればOKと思ったがエラる。
するとこちらに、こういうAUTO_INCREMENTをInnoDBは受け付けないという驚きの情報が。
感謝なり。
Authlogicのエラーメッセージとかバリデーション条件を変更する
はい、私はAuthlogic派です。
皆さんご存知の通り、Authlogic様は認証周りのことを一手に引き受けてくれます。バリデーションもやってくれます。例えば、Authlogic様は4文字以上のパスワードしか許しません。短いパスワードで登録しようものなら
password is too short (minimum is 4 characters)
と、お怒りになられます。しかし私は思うのです。
4文字は短すぎるだろ、と。
そこでバリデーション条件を変更します。ついでにメッセージも変えちゃいます。
ドキュメントを見るとvalidates_length_of_password_field_options
という属性を持っていて、merge_validates_length_of_password_field_options
メソッドを用いることでバリデーションオプションを変更できるようです。うむ、長い。
実際やるときはこんな。
class User < ActiveRecord::Base acts_as_authentic do |c| c.login_field = :email merge_validates_length_of_password_field_options minimum: 8, message: '短けぇよ!' end end
typo不可避
aタグとbuttonの見た目を揃える
Railsでlink_toとかbutton_toとかf.submitを使っていて、<a>と<button>が違う見た目になったことに憤慨したのでやってみた。bootstrapとかに頼ってると、こーいうとこが弱くなりますよね。
方針としては、全ての装飾を一旦消してaもbuttonも丸裸にしてから、好きなcssを当てるっていう感じ。
要らない行とかある気がするけどビギナーなのでそこはご愛嬌。
chromeとfirefoxで動作確認してあります。
<!doctype html> <html> <head> <!-- normalize.cssマジ神 --> <link rel="stylesheet" href="http://necolas.github.io/normalize.css/3.0.0/normalize.css"> <style> a, button { font-family: monospace; // この辺は統一できればなんでもOK font-size: 12pt; color: black; text-shadow: none; text-decoration: none; -webkit-text-decoration: none; display: inline-block; appearance: none; -webkit-appearance: none; -moz-appearance: none; background: none; border: none; outline: none; padding: 0; margin: 0; cursor: pointer; } button::-moz-focus-inner { // ハマりポイント padding: 0; border: none; } a:active { color: black; } .my-button { // ここからはご自由にどうぞ background-color: #80d080; padding: 8px; border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 4px 4px rgba(0, 0, 0, .5); } .my-button:active { background-color: #60c060; } </style> </head> <body> <a href="#" class="my-button">Anchor</a> <button class="my-button">Button</button> </body> </html>
pasteコマンドすげぇよ泣けてくるよ
これと
a b c
これが
1 2 3
これで
$ paste file1.txt file2.txt
こうなる
a 1 b 2 c 3
まじかー。もっと早く知りたかった。
てか「こういうコマンド無いのかなー」ってなぜ思わなかったのか。
(´・ω・`)クヤマレルゥ