未验证 提交 59cae075 编写于 作者: B bogdanvlviv

Add mention about `ActiveRecord::Base::filter_attributes` to the changelog entry

Also remove `# :nodoc:` for `ActiveRecord::Core::ClassMethods` in order
to show non-nodoc methods in that module on the api docs http://edgeapi.rubyonrails.org
上级 d1a14865
...@@ -9,11 +9,16 @@ ...@@ -9,11 +9,16 @@
*Darwin Wu* *Darwin Wu*
* Configuration item `config.filter_parameters` could also filter out sensitive value of database column when call `#inspect`. * Configuration item `config.filter_parameters` could also filter out
sensitive values of database columns when call `#inspect`.
We also added `ActiveRecord::Base::filter_attributes`/`=` in order to
specify sensitive attributes to specific model.
``` ```
Rails.application.config.filter_parameters += [:credit_card_number] Rails.application.config.filter_parameters += [:credit_card_number]
Account.last.inspect # => #<Account id: 123, credit_card_number: [FILTERED] ...> Account.last.inspect # => #<Account id: 123, name: "DHH", credit_card_number: [FILTERED] ...>
SecureAccount.filter_attributes += [:name]
SecureAccount.last.inspect # => #<SecureAccount id: 42, name: [FILTERED], credit_card_number: [FILTERED] ...>
``` ```
*Zhang Kang* *Zhang Kang*
......
...@@ -139,7 +139,7 @@ def self.connection_handler=(handler) ...@@ -139,7 +139,7 @@ def self.connection_handler=(handler)
self.default_connection_handler = ConnectionAdapters::ConnectionHandler.new self.default_connection_handler = ConnectionAdapters::ConnectionHandler.new
end end
module ClassMethods # :nodoc: module ClassMethods
def initialize_find_by_cache # :nodoc: def initialize_find_by_cache # :nodoc:
@find_by_statement_cache = { true => Concurrent::Map.new, false => Concurrent::Map.new } @find_by_statement_cache = { true => Concurrent::Map.new, false => Concurrent::Map.new }
end end
...@@ -216,7 +216,7 @@ def initialize_generated_modules # :nodoc: ...@@ -216,7 +216,7 @@ def initialize_generated_modules # :nodoc:
generated_association_methods generated_association_methods
end end
def generated_association_methods def generated_association_methods # :nodoc:
@generated_association_methods ||= begin @generated_association_methods ||= begin
mod = const_set(:GeneratedAssociationMethods, Module.new) mod = const_set(:GeneratedAssociationMethods, Module.new)
private_constant :GeneratedAssociationMethods private_constant :GeneratedAssociationMethods
...@@ -226,7 +226,7 @@ def generated_association_methods ...@@ -226,7 +226,7 @@ def generated_association_methods
end end
end end
# Returns columns which shouldn't be exposed while calling #inspect. # Returns columns which shouldn't be exposed while calling +#inspect+.
def filter_attributes def filter_attributes
if defined?(@filter_attributes) if defined?(@filter_attributes)
@filter_attributes @filter_attributes
...@@ -235,13 +235,13 @@ def filter_attributes ...@@ -235,13 +235,13 @@ def filter_attributes
end end
end end
# Specifies columns which shouldn't be exposed while calling #inspect. # Specifies columns which shouldn't be exposed while calling +#inspect+.
def filter_attributes=(attributes_names) def filter_attributes=(attributes_names)
@filter_attributes = attributes_names.map(&:to_s).to_set @filter_attributes = attributes_names.map(&:to_s).to_set
end end
# Returns a string like 'Post(id:integer, title:string, body:text)' # Returns a string like 'Post(id:integer, title:string, body:text)'
def inspect def inspect # :nodoc:
if self == Base if self == Base
super super
elsif abstract_class? elsif abstract_class?
...@@ -257,7 +257,7 @@ def inspect ...@@ -257,7 +257,7 @@ def inspect
end end
# Overwrite the default class equality method to provide support for decorated models. # Overwrite the default class equality method to provide support for decorated models.
def ===(object) def ===(object) # :nodoc:
object.is_a?(self) object.is_a?(self)
end end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册