Model e controller diferentes

Meu caros,

Criei uma crud com os dados do Usuario (login,senha,nome) via scaffold.
Criei um controller Login só pra fazer autentição através de uma pesquisa simples no banco como está no código abaixo :

class LoginController < ApplicationController

	#exibe a tela de login
	def entrada
		#render text: "Tela de login"
		respond_to do |format|
			format.html # login.html.erb
		end
	end
  
   # verifica se login/senha sao validos
   def valida
				
		@usuario = Usuario.where(["login=? and senha=?" , params[:login], params[:senha] ])
		if @usuario.persisted? 
			redirect_to "/usuarios"
		else
			@mensagem="Usuario nao cadastrado"
			render action: "entrada"
		end
  end
end

O Model do Usuario está assim:

class Usuario < ActiveRecord::Base
  attr_accessible :data_nascimento, :login, :nome, :senha
  
end

Ocorre que após fazer a pesquisa do usuário, não consigo acessar qualquer método para verificar se o usuário pesquisado é válido (p. ex

usuario.persisted? ou usuario.nome (neste ultimo cheguei a criar um método acessor mais não resolveu) dizendo que o método não está definido em Usuario (testei no rails console e ele reconhece)

Será que só posso acessar os métodos de um model no seu controller correspondente, isto é só posso manipular Usuario em UsuarioController ? Ok, isso quebra o MVC mas não é possível ???
:frowning:

Descobri:

O find que estava usando com where retorna um ActiveRecord::Relation e não um model como eu queria, daí eu não conseguir executar os métodos do model.
Agora é saber como eu converto o Relation num model …

No método valida coloca um first na sua busca:

@usuario = Usuario.where(["login=? and senha=?" , params[:login], params[:senha] ]).first