- User model
rails g model user username:string password_hash:string
- user_id foreign key in tables (user has many cars)
generate a migration
rails generate migration addUserId
add the foreign key to the cars table
class AddUserId < ActiveRecord::Migration
def change
add_reference :cars, :user
end
end
- a login form
this requires some routes:
resources :users
get 'login' => 'sessions#new'
post 'login' => 'sessions#create'
delete 'logout' => 'sessions#destroy'
<%= form_for(:session, url: login_path) do |f| %>
<%= f.label :username %>
<%= f.text_field :username %>
<%= f.label :password %>
<%= f.password_field :password %>
<%= f.submit "log in"%>
<% end %>
- a register form
post 'login' => 'sessions#create'
<%= form_for(:user, url: login_path) do |f| %>
<%= f.label :username %>
<%= f.text_field :username %>
<%= f.label :password %>
<%= f.password_field :password %>
<%= f.label :password_confirmation %>
<%= f.password_field :password_confirmation %>
<%= f.submit "log in"%>
<% end %>
-
an edit user form
-
logout link
<%= link_to 'logout!', logout_path, :method => 'delete' %>
- logout session destroy method
session_reset
- cars controller
def index
if( ! session[:user].nil? )
@current_user = User.find( session[:user]['id'] )
@cars = @current_user.cars
else
@cars = Car.all
end
end
- sessions create
- require at the top of your controller:
require 'digest/md5'
def create [15/958]
password = login_params[:password_hash]
username = login_params[:username]
user_object = User.find_by_username( username )
password_hash = Digest::MD5.hexdigest( password )
if( user_object.password_hash == password_hash )
session[:user] = user_object
redirect_to '/'
else
redirect_to '/login'
end
end
- seed file:
require 'digest/md5'
password_hash = Digest::MD5.hexdigest( "bannanna" )
user1 = User.create( username: "thom", password_hash: password_hash )
user2 = User.create( username: "akira", password_hash: password_hash )
User.create( username: "joe", password_hash: password_hash )
User.create( username: "jason", password_hash: password_hash )
user1.cars.create(make: "Jeep", model: "Cherokee", color: "red", year: nil)
user1.cars.create(make: "Ford", model: "Taurus", color: "doodoo", year: nil)
user2.cars.create(make: "Jeep", model: "Wrangler", color: "yellow", year: 2003)
user2.cars.create(make: "Nissan", model: "Juke", color: "black", year: 2012)