2. Login/Logout, Sign Up
$ rails g resource user email:string name:string password:string
$ rails g controller sessions
3. Model
User (email, name, password...)
Controller Controller
SessionsCotnroller UsersController
(Login/Logout) (Sign Up)
4. Model
app/models/user.rb
class User < ActiveRecord::Base
validates_presence_of :email, :password
validates_confirmation_of :password
has_many :messages
has_many :replies
end
5. Migration
db/migrate/yyyyMMddhhmmss_create_users.rb
class CreateUsers < ActiveRecord::Migration
def self.up
create_table :users do |t|
t.string :email
t.string :name
t.string :password
t.timestamps
end
end
def self.down
drop_table :users
end
end
16. class User < ActiveRecord::Base
validates_presence_of :email, :password
validates_confirmation_of :password,
:message => "should match confirmation"
end
<%= password_field "user", "password" %>
<%= password_field "user", "password_confirmation" %>
17. class User < ActiveRecord::Base
validates_exclusion_of :age,
:in => 30..60, :message => "This site is only for under 30 and over 60"
validates_format_of :email,
:with => /A([^@s]+)@((?:[-a-z0-9]+.)+[a-z]{2,})Z/i
end
24. require 'test_helper'
class UsersControllerTest < ActionController::TestCase
test "should create a new user" do
assert_difference("User.count", +1) do
post :create, :user => {
:email => "shaokun.wu@gmail.com",
:password => "a"
}
assert_redirected_to root_path
end
end
end
25. require 'test_helper'
class UserTest < ActiveSupport::TestCase
test "should set the name through email" do
user = User.new(:email => "shaokun.wu@gmail.com", :password => "a")
assert user.save
assert_equal "shaokun.wu", user.name
end
end
32. • Get the code:
http://github.com/kudelabs/roc-demo2
• See it in action:
http://demo2.railsoncampus.com
• keep in touch:
@railsoncampus
http://weibo.com/1944841390