I'm using the Adauth gem to perform authentication against our Active Directory for a site that backs to an HBase cluster. At this point we're not really concerned with storing additional user data, we just want the authentication functionality.
It'd be pretty easy to create a login form with no model except then I'd have to handle exceptional situations (validation!) outside of the typical flow which makes skipping the model ultimately just cost me extra time in the form of more work. I'm also using Formtastic, specifically Bootstrap-Formtastic, and I really like consistency in my application.
So based on this article I implemented a database-less ActiveRecord model so I could utilize semanticformfor and remain consistent with the rest of my application.
#./app/controllers/sessions_controller.rb
class SessionsController < AdAuthController
before_filter :check_authentication, :except => [ :new, :create, :destroy ]
⋮
class LoginUser < ActiveRecord::Base
validates :username, :presence => true
validates :password, :presence => true
def self.columns
@columns ||= []
end
def self.column(name, sql_type = nil, default = nil, null = true)
columns << ActiveRecord::ConnectionAdapters::Column.new(name.to_s, default, sql_type.to_s, null)
end
column :username, :string
column :password, :string
end
end
And since I'm using an embedded class its important to remember to specify the correct symbol in the parameters:
#./app/controllers/sessions_controller.rb
⋮
def create
@login_user = LoginUser.new(params[:sessions_controller_login_user])
⋮
end
⋮
Because we are backing to a HBase cluster I expect this isn't the last time I'll need to use this approach on our project.