チュートリアルをやってみる。Soft備忘録を兼ねた技術的なメモです。Webサービス等の開発を承っております。2015-09-15チュートリアルをやってみる。ユーザモデル編Railsこれはチュートリアルをやってみたログである。Recordとして扱い、SQLを意識せずモデリングできる。開発環境でSQLite、本番環境のHerokuでPostgreSQLといった使い方ができる。モデルの作成nameとemailの属性があるユーザモデルを作る。email:stringモデル名には単数形(コントローラには複数形)をつける。マイグレーションファイルが生成された。endendつまり、usersテーブル(複数形になっている)が生成され、name,emailというカラム、定義されている。t.timestampsでcreated_atとupdate_atというdatetime属性のカラムができる。マイグレーションの適用マイグレーションを実行する。db:migratedb/development.sqlite3が生成されているのでsqlitebrowser等で確認する。マイグレーションは可逆なのでロールバックもできる。db:rollbackモデルファイルを見てみる。ActiveRecord::BaseendActiveRecordの継承となっていることを確認した。ユーザオブジェクトをコンソールで触ってみる。SQLでINSERTされた。日時なども記録されている。ドット記法でアクセスできる。生成と保存をcreateで一度にやる。ユーザオブジェクトを検索してみる。id=3例外が投げられる。全部User.allユーザオブジェクトを更新してみる。update_atも更新されていることがわかる。ユーザ検証(validation)メールアドレスはidのように使いたいので重複させない。一意性(uniquness)nameは空にさせたくない。--sandbox名前を空のユーザを作ってみる。email:"pot@pot.com")セーブが失敗することを確認する。確かに検証に失敗している。エラー内容を確認する。emailのフォーマットを制限する。}end正規表現でフォーマットを制限している。}end一意性の注意点ユーザ登録時にsubmitを素早く2回クリックすると二つのリクエストが検証にパスしメモリーに作成され、保存できてしまう。データベースレベルでも一意性を強制するようにすること。emailカラムにindexを作成する。endendこれで、usersテーブルのemailカラムにindexが追加され、uniqueをtrueとすることで一意性がデータベースレベルで強制される。(indexを追加したことで、email属性が全表スキャンにならなくて済むようにもなった。db:migrateさらに、emailをデータベースにセーブする際に文字を小文字に変換する処理をいれておく。}....endこのようにbefore_saveコールバックでの処理を書いておくと、セーブ前に小文字に変換してくれる。セキュアなパスワードの追加ユーザ属性にパスワードを追加したい。パスワードは暗号化されてデータベースに保存される。認証は暗号化されたパスワード同士を比較することで行う。railsではhas_secure_passwordメソッドで作れる。endendマイグレートする。db:migrateユーザクラスにhas_secure_passwordを追加する。has_secure_passwordendユーザのパスワードがあっているかはuser.authenticate(password)で確認できる。パスワードの長さを最小でも6文字にする。}endコンソールで確認してみる。10:55チュートリアルをやってみる。チュートリアルをやってみる。チュートリアルをやってみる。SoftはiPhoneアプリを制作しております。(1)はてなブログをはじめよう!KatagiriSoさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。