<%
fields.nil? || associations.nil? or raise ArgumentError, "with-fields -- specify either fields or associations but not both"
field_names = if associations == "has_many"
this.class.reflections.values.select { |refl| refl.macro == :has_many }.map { |refl| refl.name.to_s }
elsif fields.nil? || fields == "*" || fields.is_a?(Class)
klass = fields.is_a?(Class) ? fields : this.class
columns = standard_fields(klass, include_timestamps)
if skip_associations == "has_many"
assocs = this.class.reflections.values.reject {|r| r.macro == :has_many }.map &its.name.to_s
columns + assocs
elsif skip_associations
columns
else
assocs = klass.reflections.values.map &its.name.to_s
columns + assocs
end
else
comma_split(fields.gsub('-', '_'))
end
field_names -= comma_split(skip) if skip
field_names = field_names.select {|f| can_view?(this, f)} unless force_all
field_names.each do |field|
%><%
if field == "this"
%><%
else
%><%
end
%><%
end
%>
<%=
field_names = if fields.nil? || fields == "*" || fields.is_a?(Class)
klass = fields.is_a?(Class) ? fields : this.member_class
columns = klass.content_columns.*.name
columns -= %w{created_at updated_at created_on updated_on deleted_at} unless include_timestamps
if skip_associations == "has_many"
assocs = this.reflections.values.reject {|r| r.macro == :has_many }.map &its.name.to_s
columns + assocs
elsif skip_associations
columns
else
assocs = klass.reflections.values.map &its.name.to_s
columns + assocs
end
else
comma_split(fields)
end
field_names -= comma_split(skip) if skip
scope.new_scope :field_name => nil, :field_path => nil do
field_names.map do |n|
scope.field_name = n == "this" ? (this.member_class.try.name || 'this') : n.to_s.gsub("." , "_")
scope.field_path = n
parameters.default
end.safe_join
end
%>