Cleanup #attributes method
Since we're prepending the ActiveRecord::Extension module, we can take advantage of it and avoid using an alias to extend the original #attributes method.
This commit is contained in:
parent
93dd5390b6
commit
ea12c5aae8
|
|
@ -7,31 +7,25 @@ module Gitlab
|
|||
extend ActiveSupport::Concern
|
||||
|
||||
included do
|
||||
# Always exclude _html fields from attributes (including serialization).
|
||||
# They contain unredacted HTML, which would be a security issue
|
||||
alias_method :attributes_before_markdown_cache, :attributes
|
||||
def attributes
|
||||
attrs = attributes_before_markdown_cache
|
||||
html_fields = cached_markdown_fields.html_fields
|
||||
whitelisted = cached_markdown_fields.html_fields_whitelisted
|
||||
exclude_fields = html_fields - whitelisted
|
||||
|
||||
exclude_fields.each do |field|
|
||||
attrs.delete(field)
|
||||
end
|
||||
|
||||
if whitelisted.empty?
|
||||
attrs.delete('cached_markdown_version')
|
||||
end
|
||||
|
||||
attrs
|
||||
end
|
||||
|
||||
# Using before_update here conflicts with elasticsearch-model somehow
|
||||
before_create :refresh_markdown_cache, if: :invalidated_markdown_cache?
|
||||
before_update :refresh_markdown_cache, if: :invalidated_markdown_cache?
|
||||
end
|
||||
|
||||
# Always exclude _html fields from attributes (including serialization).
|
||||
# They contain unredacted HTML, which would be a security issue
|
||||
def attributes
|
||||
attrs = super
|
||||
html_fields = cached_markdown_fields.html_fields
|
||||
whitelisted = cached_markdown_fields.html_fields_whitelisted
|
||||
exclude_fields = html_fields - whitelisted
|
||||
|
||||
attrs.except!(*exclude_fields)
|
||||
attrs.delete('cached_markdown_version') if whitelisted.empty?
|
||||
|
||||
attrs
|
||||
end
|
||||
|
||||
def changed_markdown_fields
|
||||
changed_attributes.keys.map(&:to_s) & cached_markdown_fields.markdown_fields.map(&:to_s)
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in New Issue