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