Class: ActiveFedora::Orders::Builder
- Inherits:
-
Associations::Builder::CollectionAssociation
- Object
- Associations::Builder::CollectionAssociation
- ActiveFedora::Orders::Builder
- Includes:
- AutosaveAssociation::AssociationBuilderExtension
- Defined in:
- lib/active_fedora/orders/builder.rb
Defined Under Namespace
Modules: FixFirstLast
Class Method Summary collapse
Instance Method Summary collapse
- #build ⇒ Object
-
#initialize(model, name, options) ⇒ Builder
constructor
A new instance of Builder.
Constructor Details
#initialize(model, name, options) ⇒ Builder
Returns a new instance of Builder.
17 18 19 20 21 22 23 |
# File 'lib/active_fedora/orders/builder.rb', line 17 def initialize(model, name, ) @original_name = name @model = model name = :"ordered_#{name.to_s.singularize}_proxies" = {ordered_reflection: ordered_reflection}.merge() super end |
Class Method Details
.define_readers(mixin, name) ⇒ Object
7 8 9 10 11 12 13 14 15 |
# File 'lib/active_fedora/orders/builder.rb', line 7 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 |
Instance Method Details
#build ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/active_fedora/orders/builder.rb', line 42 def build super.tap do |result| 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(result.[:through]) 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 end end |