models: move html_data_attributes to policies.
Move html_data_attributes definitions from models to policies. Which attributes are permitted as data-* attributes is a view level concern and should be defined on the policy level, not the model level. Models should be agnostic about how they're used in views.
This commit is contained in:
@@ -70,7 +70,18 @@ class ApplicationPolicy
|
||||
permitted_attributes_for_update
|
||||
end
|
||||
|
||||
# The list of attributes that are permitted to be returned by the API.
|
||||
def api_attributes
|
||||
record.class.attribute_types.reject { |name, attr| attr.type.in?([:inet, :tsvector]) }.keys.map(&:to_sym)
|
||||
end
|
||||
|
||||
# The list of attributes that are permitted to be used as data-* attributes
|
||||
# in tables and in the <body> tag on show pages.
|
||||
def html_data_attributes
|
||||
data_attributes = record.class.columns.select do |column|
|
||||
column.type.in?([:integer, :boolean]) && !column.array?
|
||||
end.map(&:name).map(&:to_sym)
|
||||
|
||||
api_attributes & data_attributes
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user