Class: ActiveFedora::Associations::Builder::Orders
- Inherits:
-
CollectionAssociation
- Object
- Association
- CollectionAssociation
- ActiveFedora::Associations::Builder::Orders
- Defined in:
- lib/active_fedora/associations/builder/orders.rb
Defined Under Namespace
Modules: FixFirstLast
Constant Summary
Constants inherited from CollectionAssociation
CollectionAssociation::CALLBACKS
Constants inherited from Association
Class Method Summary collapse
- .build(model, name, options) ⇒ Object
- .define_readers(mixin, name) ⇒ Object
- .macro ⇒ Object
- .valid_options(options) ⇒ Object
Methods inherited from CollectionAssociation
define_callback, define_callbacks, define_extensions, wrap_scope
Methods inherited from Association
add_destroy_callbacks, better_name, build_scope, check_dependent_options, create_reflection, define_accessors, define_callbacks, define_extensions, define_validations, define_writers, valid_dependent_options, validate_options, wrap_scope
Class Method Details
.build(model, name, options) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/active_fedora/associations/builder/orders.rb', line 25 def self.build(model, name, ) = { unordered_reflection: unordered_reflection(model, name) }.merge() 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([:through]) source.save return if head_ids == source.head_id && tail_ids == source.tail_id self.head = source.head_id self.tail = source.tail_id save! if changed? end model.include ActiveFedora::Associations::Builder::Orders::FixFirstLast super end |
.define_readers(mixin, name) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/active_fedora/associations/builder/orders.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, pluralize: false)}_ids") do association(name).target_ids_reader end mixin.redefine_method("#{target_accessor(name)}=") do |nodes| association(name).target_writer(nodes) end end |
.macro ⇒ Object
4 5 6 |
# File 'lib/active_fedora/associations/builder/orders.rb', line 4 def self.macro :orders end |
.valid_options(options) ⇒ Object
8 9 10 |
# File 'lib/active_fedora/associations/builder/orders.rb', line 8 def self.() super + [:through, :unordered_reflection] end |