class Opto::Model::Association::HasMany::Proxy
Attributes
as[R]
members[R]
options[R]
parent[R]
target_class[R]
Public Class Methods
new(parent, target_class, as, options = {})
click to toggle source
# File lib/opto/model/association/has_many/proxy.rb, line 10 def initialize(parent, target_class, as, options = {}) @parent, @target_class, @as = parent, target_class, as @options = { key_is: :name }.merge(options) @members = [] end
Public Instance Methods
association_errors()
click to toggle source
# File lib/opto/model/association/has_many/proxy.rb, line 16 def association_errors errors = { } if members.empty? && options[:required] errors[:presence] = "Collection '#{as}' is empty" end errors end
association_valid?()
click to toggle source
# File lib/opto/model/association/has_many/proxy.rb, line 24 def association_valid? association_errors.empty? end
errors()
click to toggle source
# File lib/opto/model/association/has_many/proxy.rb, line 50 def errors result = { } each_with_index do |member, idx| errors = member.errors result[idx] = errors unless errors.empty? end result.merge!(association_errors || {}) result.empty? ? {} : { as => result } end
method_missing(meth, *args)
click to toggle source
# File lib/opto/model/association/has_many/proxy.rb, line 28 def method_missing(meth, *args) members.send(meth, *args) end
new(*args)
click to toggle source
# File lib/opto/model/association/has_many/proxy.rb, line 36 def new(*args) if args.first.kind_of?(Hash) && args.size == 1 && args.first[args.first.keys.first].kind_of?(Hash) key = args.first.keys.first args = [args.first[key].merge(options[:key_is] => key.kind_of?(Symbol) ? key.to_s : key)] end target = target_class.new(*args) members << target target end
respond_to_missing?(meth, include_private = false)
click to toggle source
# File lib/opto/model/association/has_many/proxy.rb, line 32 def respond_to_missing?(meth, include_private = false) members.respond_to?(meth, include_private) end
to_h()
click to toggle source
# File lib/opto/model/association/has_many/proxy.rb, line 46 def to_h empty? ? {} : { as => map(&:to_h) } end