cd siliconvalley

I will startup at San Francisco !

Ruby on Rails Tutorialに挑戦中!ユーザーのモデルを作成します!

どうも。昨日は下記のことに注意して、取り組みました。
 
Rubyはオブジェクティブ指向の言語
・ルートの書き換えをHTMLからRuby仕様へと行う
 
今日からはユーザーモデルを作成していきます。
まず、Gitでバージョン管理を行っているのであればブランチを
新規に立てる必要があります。
 
$ git checkout master
$ git checkout -b modeling-users
 

 

前回のUserコントローラーを生成したのに続き、
今度はnameとemailの2つの属性をもつUserモデルを生成します。
 
$ rails generate model user name:string email:string
 
これによってマイグレーションが生成されます。マイグレーションは要求が変更された場合に、データモデルを適合させることができます。これはchangeメソッドの集まりとなります。changeメソッドはcreate_tableというRailsメソッドを呼び、ユーザーを保存する為のテーブルをデータベースに作成します。
 
$ bundle exec rake db:migrate
 
上記を実行することによって、「マイグレーションの適用」がされることになります。
 
ユーザーモデルをRails Consoleを使って確認していきます。Rails ConsoleはRailsを対話的に操作する為の機能となります。つまり、ブラウザ上で行っている
 
・ユーザーの検証
 
> spec/models/user_spec.rbを下記のようにテスト仕様とする
require 'spec_helper'
 
describe User do
 
before { @user = User.new(name: "Example User", email: "user@example.com")}
 
subject { @user }
// beforeブロックは前処理用で、各サンプルが実行される前にそのブロックの中のコードを実行します。この場合、User.newと初期化用の有効なハッシュを使って、新しい@userインスタンス変数を作成します。
 
it { should respond_to(:name) }
it { should respond_to(:email) }
// name属性とemail属性の存在をテストします
end
 
name属性を検証するには、user.rbにvalidatesメソッドを使ってuserのnameを定義しておく必要があります。
 
require 'spec_helper'
 
describe User do
 
before { @user = User.new(name: "Example User", email: "user@example.com")}
 
subject { @user }
 
it { should respond_to(:name) }
it { should respond_to(:email) }
 
it { should be_valid }
// RSpecの真偽値の慣習を示すサンプル
 
describe "when name is not present" do
before {@user.name = " " }
it { should_not be_valid }
end
end
 
user.rbには記入をしていく上での条件を記載していく
例えば、名前(name)に文字が書かれておく必要がある場合は
validates :name, presence: true
例えば、価格(price)に0以上の値が含まれなければならない場合は
validates :price, numericality: { only_integer: true, greater_than_or_equal_to: 0 }
となる。
 
条件をどんどん足していくことができます。
 
 
・ユーザー認証
 
ユーザーの検証を作り終えたら、次はユーザーをnameとemailの情報からデータベースから取ってくる作業をしなくてはなりません。(User.findby)
どこで、authenticateメソッドを使用して、受け取ったパスワードがユーザーのパスワードがユーザーのパスワードと一致することを確認します。