Class: Hanami::Model::Associations::HasMany Private
- Inherits:
-
Object
- Object
- Hanami::Model::Associations::HasMany
- Defined in:
- lib/hanami/model/associations/has_many.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
One-To-Many association
Instance Attribute Summary collapse
- #repository ⇒ Object readonly private
- #scope ⇒ Object readonly private
- #source ⇒ Object readonly private
- #subject ⇒ Object readonly private
- #target ⇒ Object readonly private
Class Method Summary collapse
- .schema_type(entity) ⇒ Object private
Instance Method Summary collapse
- #add(data) ⇒ Object private
- #count ⇒ Object private
- #create(data) ⇒ Object private
- #delete ⇒ Object private
- #each(&blk) ⇒ Object private
-
#initialize(repository, source, target, subject, scope = nil) ⇒ HasMany
constructor
private
A new instance of HasMany.
- #map(&blk) ⇒ Object private
- #remove(id) ⇒ Object private
- #to_a ⇒ Object private
- #where(condition) ⇒ Object private
Constructor Details
#initialize(repository, source, target, subject, scope = nil) ⇒ HasMany
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of HasMany.
40 41 42 43 44 45 46 47 |
# File 'lib/hanami/model/associations/has_many.rb', line 40 def initialize(repository, source, target, subject, scope = nil) @repository = repository @source = source @target = target @subject = subject.to_hash unless subject.nil? @scope = scope || _build_scope freeze end |
Instance Attribute Details
#repository ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
20 21 22 |
# File 'lib/hanami/model/associations/has_many.rb', line 20 def repository @repository end |
#scope ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
36 37 38 |
# File 'lib/hanami/model/associations/has_many.rb', line 36 def scope @scope end |
#source ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
24 25 26 |
# File 'lib/hanami/model/associations/has_many.rb', line 24 def source @source end |
#subject ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
32 33 34 |
# File 'lib/hanami/model/associations/has_many.rb', line 32 def subject @subject end |
#target ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
28 29 30 |
# File 'lib/hanami/model/associations/has_many.rb', line 28 def target @target end |
Class Method Details
.schema_type(entity) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
13 14 15 16 |
# File 'lib/hanami/model/associations/has_many.rb', line 13 def self.schema_type(entity) type = Sql::Types::Schema::AssociationType.new(entity) Types::Strict::Array.member(type) end |
Instance Method Details
#add(data) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
60 61 62 63 |
# File 'lib/hanami/model/associations/has_many.rb', line 60 def add(data) command(:create, relation(target), use: [:timestamps]) .call(associate(data)) end |
#count ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
106 107 108 |
# File 'lib/hanami/model/associations/has_many.rb', line 106 def count scope.count end |
#create(data) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
51 52 53 54 55 56 |
# File 'lib/hanami/model/associations/has_many.rb', line 51 def create(data) entity.new( command(:create, aggregate(target), use: [:timestamps]) .call(data) ) end |
#delete ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
76 77 78 |
# File 'lib/hanami/model/associations/has_many.rb', line 76 def delete scope.delete end |
#each(&blk) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
82 83 84 |
# File 'lib/hanami/model/associations/has_many.rb', line 82 def each(&blk) scope.each(&blk) end |
#map(&blk) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
88 89 90 |
# File 'lib/hanami/model/associations/has_many.rb', line 88 def map(&blk) to_a.map(&blk) end |
#remove(id) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
67 68 69 70 71 72 |
# File 'lib/hanami/model/associations/has_many.rb', line 67 def remove(id) target_relation = relation(target) command(:update, target_relation.where(target_relation.primary_key => id), use: [:timestamps]) .call(unassociate) end |
#to_a ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
94 95 96 |
# File 'lib/hanami/model/associations/has_many.rb', line 94 def to_a scope.to_a end |
#where(condition) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
100 101 102 |
# File 'lib/hanami/model/associations/has_many.rb', line 100 def where(condition) __new__(scope.where(condition)) end |