class Administrate::Field::HasMany
Constants
- DEFAULT_LIMIT
Public Class Methods
permitted_attribute(attr, _options = nil)
click to toggle source
# File lib/administrate/field/has_many.rb, line 10 def self.permitted_attribute(attr, _options = nil) { "#{attr.to_s.singularize}_ids".to_sym => [] } end
Public Instance Methods
associated_collection(order = self.order)
click to toggle source
# File lib/administrate/field/has_many.rb, line 14 def associated_collection(order = self.order) Administrate::Page::Collection.new(associated_dashboard, order: order) end
associated_resource_options()
click to toggle source
# File lib/administrate/field/has_many.rb, line 22 def associated_resource_options candidate_resources.map do |resource| [display_candidate_resource(resource), resource.send(primary_key)] end end
attribute_key()
click to toggle source
# File lib/administrate/field/has_many.rb, line 18 def attribute_key permitted_attribute.keys.first end
data()
click to toggle source
# File lib/administrate/field/has_many.rb, line 51 def data @data ||= associated_class.none end
limit()
click to toggle source
# File lib/administrate/field/has_many.rb, line 34 def limit options.fetch(:limit, DEFAULT_LIMIT) end
more_than_limit?()
click to toggle source
# File lib/administrate/field/has_many.rb, line 47 def more_than_limit? data.count(:all) > limit end
order()
click to toggle source
# File lib/administrate/field/has_many.rb, line 62 def order @order ||= Administrate::Order.new(sort_by, direction) end
order_from_params(params)
click to toggle source
# File lib/administrate/field/has_many.rb, line 55 def order_from_params(params) Administrate::Order.new( params.fetch(:order, sort_by), params.fetch(:direction, direction), ) end
permitted_attribute()
click to toggle source
# File lib/administrate/field/has_many.rb, line 38 def permitted_attribute self.class.permitted_attribute(attribute) end
resources(page = 1, order = self.order)
click to toggle source
# File lib/administrate/field/has_many.rb, line 42 def resources(page = 1, order = self.order) resources = order.apply(data).page(page).per(limit) includes.any? ? resources.includes(*includes) : resources end
selected_options()
click to toggle source
# File lib/administrate/field/has_many.rb, line 28 def selected_options return if data.empty? data.map { |object| object.send(primary_key) } end
Private Instance Methods
candidate_resources()
click to toggle source
# File lib/administrate/field/has_many.rb, line 72 def candidate_resources if options.key?(:includes) includes = options.fetch(:includes) associated_class.includes(*includes).all else associated_class.all end end
direction()
click to toggle source
# File lib/administrate/field/has_many.rb, line 89 def direction options[:direction] end
display_candidate_resource(resource)
click to toggle source
# File lib/administrate/field/has_many.rb, line 81 def display_candidate_resource(resource) associated_dashboard.display_resource(resource) end
includes()
click to toggle source
# File lib/administrate/field/has_many.rb, line 68 def includes associated_dashboard.collection_includes end
sort_by()
click to toggle source
# File lib/administrate/field/has_many.rb, line 85 def sort_by options[:sort_by] end