Class: ActiveFedora::Associations::Builder::DirectlyContainsOne
Overview
Constant Summary
Constants inherited
from Association
Association::VALID_OPTIONS
Class Method Summary
collapse
define_accessors, define_constructors
Methods inherited from Association
add_destroy_callbacks, better_name, build, build_scope, check_dependent_options, define_accessors, define_callbacks, define_extensions, define_readers, define_validations, define_writers, valid_dependent_options, wrap_scope
Class Method Details
.create_reflection(model, name, scope, options, extension = nil) ⇒ Object
11
12
13
14
15
16
17
18
19
|
# File 'lib/active_fedora/associations/builder/directly_contains_one.rb', line 11
def self.create_reflection(model, name, scope, options, extension = nil)
if options[:through]
inherit_options_from_association(model, options, options[:through])
else
raise ArgumentError, "you must specify a :through option on #{name}. #{name} will use the container from that directly_contains association."
end
super
end
|
.macro ⇒ Object
3
4
5
|
# File 'lib/active_fedora/associations/builder/directly_contains_one.rb', line 3
def self.macro
:directly_contains_one
end
|
.valid_options(options) ⇒ Object
7
8
9
|
# File 'lib/active_fedora/associations/builder/directly_contains_one.rb', line 7
def self.valid_options(options)
super + [:has_member_relation, :is_member_of_relation, :type, :through] - [:predicate]
end
|
.validate_options(options) ⇒ Object
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/active_fedora/associations/builder/directly_contains_one.rb', line 21
def self.validate_options(options)
super
if options[:class_name] == "ActiveFedora::File"
raise ArgumentError, "You cannot set :class_name of #{name} to ActiveFedora::File because directly_contains_one needs to assert and read RDF.type assertions, which is not supported by ActiveFedora::File. To make Files support RDF.type assertions, define a subclass of ActiveFedora::File and make it `include ActiveFedora::WithMetadata`. Otherwise, all subclasses of ActiveFedora::Base support RDF.type assertions."
elsif !options[:has_member_relation] && !options[:is_member_of_relation]
raise ArgumentError, "You must specify a :has_member_relation or :is_member_of_relation predicate for #{name}"
elsif !options[:has_member_relation].is_a?(RDF::URI) && !options[:is_member_of_relation].is_a?(RDF::URI)
raise ArgumentError, "Predicate must be a kind of RDF::URI"
end
return if options[:type].is_a?(RDF::URI)
raise ArgumentError, "You must specify a Type and it must be a kind of RDF::URI"
end
|