lib/devise/models.rb in devise-0.6.1 vs lib/devise/models.rb in devise-0.6.2

- old
+ new

@@ -73,10 +73,11 @@ # raise "You need to give at least one Devise module" if modules.empty? options = modules.extract_options! modules = Devise.all if modules.include?(:all) modules -= Array(options.delete(:except)) + modules = Devise::ALL & modules if !modules.include?(:authenticatable) modules = [:authenticatable] | modules ActiveSupport::Deprecation.warn ":authenticatable won't be included by default in devise in future versions, please add it", caller[0,10] end @@ -93,8 +94,29 @@ # Stores all modules included inside the model, so we are able to verify # which routes are needed. def devise_modules @devise_modules ||= [] + end + + # Find an initialize a record setting an error if it can't be found + def find_or_initialize_with_error_by(attribute, value, error=:invalid) + if value.present? + conditions = { attribute => value } + record = find(:first, :conditions => conditions) + end + + unless record + record = new + + if value.present? + record.send(:"#{attribute}=", value) + record.errors.add(attribute, error, :default => error.to_s.gsub("_", " ")) + else + record.errors.add(attribute, :blank) + end + end + + record end end end