class Komagire::KeyList
Attributes
attribute[R]
content_class_name[R]
Public Class Methods
new(content_class_name, attribute, cskeys, options = {})
click to toggle source
@param [String] content_class_name
@param [Symbol] attribute @param [String] cskeys comma separated keys @param [Hash] options @option options [String] :delimiter (Komagire::DEFAULT_DELIMITER)
Calls superclass method
# File lib/komagire/key_list.rb, line 18 def initialize(content_class_name, attribute, cskeys, options = {}) @content_class_name = content_class_name @attribute = attribute @delimiter = options[:delimiter] || Komagire::DEFAULT_DELIMITER @sort = options[:sort] || false @cskeys = _convert(cskeys) super(_find_by_cskeys) end
Public Instance Methods
cskeys()
click to toggle source
comma separated keys
@return [String]
# File lib/komagire/key_list.rb, line 30 def cskeys key_values = compact.map(&@attribute).uniq.tap {|values| values.sort! if @sort } ([''] + key_values + ['']).join(@delimiter) end
freeze()
click to toggle source
Calls superclass method
# File lib/komagire/key_list.rb, line 35 def freeze case __getobj__ when ActiveRecord::Relation # avoid ActiveRecord::Relation is frozen else super end end
Private Instance Methods
_convert(cskeys)
click to toggle source
# File lib/komagire/key_list.rb, line 46 def _convert(cskeys) Converter.new(@content_class_name, @attribute, @delimiter).convert(cskeys) end
_find_by_cskeys()
click to toggle source
# File lib/komagire/key_list.rb, line 54 def _find_by_cskeys keys = _keys return [] if keys.empty? values = content_class_name.constantize.where(@attribute => keys).compact if @sort values.sort_by { |v| v.public_send(@attribute) } else values.index_by { |v| v.public_send(@attribute).to_s }.values_at(*keys) end end
_keys()
click to toggle source
# File lib/komagire/key_list.rb, line 50 def _keys @cskeys.split(@delimiter).uniq end