class ActiveFedora::Orders::Builder
Public Class Methods
build(model, name, options)
click to toggle source
Calls superclass method
# File lib/active_fedora/orders/builder.rb, line 22 def self.build(model, name, options) options = { unordered_reflection: unordered_reflection(model, name)}.merge(options) name = :"ordered_#{name.to_s.singularize}_proxies" model.property :head, predicate: ::RDF::Vocab::IANA['first'] model.property :tail, predicate: ::RDF::Vocab::IANA.last model.send(:define_method, :apply_first_and_last) do source = send(options[:through]) source.save return if head.map(&:rdf_subject) == source.head_id && tail.map(&:rdf_subject) == source.tail_id self.head = source.head_id self.tail = source.tail_id save! if changed? end model.include ActiveFedora::Orders::Builder::FixFirstLast super end
create_reflection(model, name, scope, options, extension = nil)
click to toggle source
# File lib/active_fedora/orders/builder.rb, line 39 def self.create_reflection(model, name, scope, options, extension = nil) unless name.is_a?(Symbol) name = name.to_sym Deprecation.warn(ActiveFedora::Base, "association names must be a Symbol") end validate_options(options) translate_property_to_predicate(options) scope = build_scope(scope, extension) name = better_name(name) ActiveFedora::Orders::Reflection.create(macro, name, scope, options, model) end
define_readers(mixin, name)
click to toggle source
Calls superclass method
# File lib/active_fedora/orders/builder.rb, line 12 def self.define_readers(mixin, name) super mixin.redefine_method(target_accessor(name)) do association(name).target_reader end mixin.redefine_method("#{target_accessor(name)}=") do |nodes| association(name).target_writer(nodes) end end
macro()
click to toggle source
# File lib/active_fedora/orders/builder.rb, line 4 def self.macro :orders end
valid_options(options)
click to toggle source
Calls superclass method
# File lib/active_fedora/orders/builder.rb, line 8 def self.valid_options(options) super + [:through, :unordered_reflection] end
Private Class Methods
target_accessor(name)
click to toggle source
# File lib/active_fedora/orders/builder.rb, line 72 def self.target_accessor(name) name.to_s.gsub("_proxies","").pluralize end
unordered_reflection(model, original_name)
click to toggle source
# File lib/active_fedora/orders/builder.rb, line 76 def self.unordered_reflection(model, original_name) model._reflect_on_association(original_name) end