aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller/metal/params_wrapper.rb
diff options
context:
space:
mode:
authorJean-Francois Turcot <jfturcot@calypsoconcept.com>2011-12-07 22:50:01 -0500
committerJean-Francois Turcot <jfturcot@calypsoconcept.com>2011-12-07 22:50:01 -0500
commitd5526218e43072a3b9b4a55568f4b29b3a2c0445 (patch)
treefe5f4b3a42cd8c52714841531fc36a18f4ee20d7 /actionpack/lib/action_controller/metal/params_wrapper.rb
parent30f0d7bac8240ba734ad37f42448f84e5eaf7023 (diff)
downloadrails-d5526218e43072a3b9b4a55568f4b29b3a2c0445.tar.gz
rails-d5526218e43072a3b9b4a55568f4b29b3a2c0445.tar.bz2
rails-d5526218e43072a3b9b4a55568f4b29b3a2c0445.zip
ParamsWrapper only wrap the accessible attributes when they were set
Diffstat (limited to 'actionpack/lib/action_controller/metal/params_wrapper.rb')
-rw-r--r--actionpack/lib/action_controller/metal/params_wrapper.rb9
1 files changed, 8 insertions, 1 deletions
diff --git a/actionpack/lib/action_controller/metal/params_wrapper.rb b/actionpack/lib/action_controller/metal/params_wrapper.rb
index 9dcea86253..5c28a8074f 100644
--- a/actionpack/lib/action_controller/metal/params_wrapper.rb
+++ b/actionpack/lib/action_controller/metal/params_wrapper.rb
@@ -43,6 +43,11 @@ module ActionController
# wrap_parameters :person, :include => [:username, :password]
# end
#
+ # On ActiveRecord models with no +:include+ or +:exclude+ option set,
+ # if attr_accessible is set on that model, it will only wrap the accessible
+ # parameters, else it will only wrap the parameters returned by the class
+ # method attribute_names.
+ #
# If you're going to pass the parameters to an +ActiveModel+ object (such as
# +User.new(params[:user])+), you might consider passing the model class to
# the method instead. The +ParamsWrapper+ will actually try to determine the
@@ -162,7 +167,9 @@ module ActionController
unless options[:include] || options[:exclude]
model ||= _default_wrap_model
- if model.respond_to?(:attribute_names) && model.attribute_names.present?
+ if model.respond_to?(:accessible_attributes) && model.accessible_attributes.present?
+ options[:include] = model.accessible_attributes.to_a
+ elsif model.respond_to?(:attribute_names) && model.attribute_names.present?
options[:include] = model.attribute_names
end
end