Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde pessoal,
Estou iniciando neste universo e confesso que tem sido muito divertido. Comprei o livro do Urubatan, afim de ter uma referência para estudo mas logo no início encntrei um problema.
Já tentei repetir todo o procedimento três vezes e o mesmo erro persiste:
NoMethodError in SessionsController#createundefined method 'first' for #<Class:0xb61979ac>
vendor/rails/activerecord/lib/active_record/base.rb:1532:in 'method_missing'
app/models/user.rb:18:in 'logon'
app/controllers/sessions_controller.rb:7:in 'create'
Aparentemente o session_controller está correto, já revisei o código várias vezes e não consigo identificar o que fiz de errado. Alguém tem idéia do que poderia ser esse problema?
Abaixo seguem os arquivos user.rb, routes.br, e sessions_controller.rb :
SessionController
class SessionsController < ApplicationController
def new
end
def create
@user = User.logon(params[:login],params[:password])
if @user
session[:user_id] = @user.id
destiny = session[:return_to] || root_path
redirect_to destiny
else
flash[:notice] = "O login falhou, verifique o nome de usuário e senha informados"
render :action => "new"
end
end
def destroy
session[:user_id] = nil
redirect_to new_session_path
end
end
Model User
class User < ActiveRecord::Base
has_many :project_memberships, :conditions => "leaved is null"
has_many :time_logs
has_many :projects, :through => :project_memberships
validates_presence_of :login, :password, :name, :email
validates_length_of :login, :in => 5..100
validates_length_of :password, :in => 5..50
validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/
validates_uniqueness_of :login
validates_uniqueness_of :email
def self.logon(username_or_email,password)
user = User.first :conditions => ["(login = ? or email = ?) and password = ?",username_or_email,username_or_email,password]
user
endRoutes
ActionController::Routing::Routes.draw do |map|
map.resources :sessions
map.resources :users do |usr|
usr.resources :time_logs
usr.resources :project_memberships
end
map.resources :projects do |proj|
proj.resources :task_types do |tt|
tt.resources :time_logs
end
proj.resources :project_memberships
end
map.root :controller => "projects"
# Install the default routes as the lowest priority.
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
end
[]'s
Carregando comentários...