class ARMocker::Relation::HasMany

A wrapper for models intended to act as an ActiveRecord::Relation for a has_many relationship

Public Class Methods

new(members) click to toggle source
# File lib/a_r_mocker/relation/has_many.rb, line 8
def initialize(members)
  @members = members.is_a?(ARMocker::Models) ? members.to_a : members
end

Public Instance Methods

build(attributes = {}) click to toggle source
# File lib/a_r_mocker/relation/has_many.rb, line 17
def build(attributes = {})
  new_member = new_member(attributes.merge(persisted: false))
  @members << new_member
  new_member
end
create(attributes = {}) click to toggle source
# File lib/a_r_mocker/relation/has_many.rb, line 23
def create(attributes = {})
  created_member = new_member(attributes.merge(persisted: true))
  @members << created_member
  created_member
end
delete(member) click to toggle source
# File lib/a_r_mocker/relation/has_many.rb, line 29
def delete(member)
  @members.delete(member)
  true
end
each(&block) click to toggle source
# File lib/a_r_mocker/relation/has_many.rb, line 12
def each(&block)
  @members.each(&block)
  self
end
to_ary() click to toggle source
# File lib/a_r_mocker/relation/has_many.rb, line 34
def to_ary
  @members
end

Private Instance Methods

new_member(attributes = {}) click to toggle source
# File lib/a_r_mocker/relation/has_many.rb, line 38
        def new_member(attributes = {})
  Model.new(attributes.merge(persisted: attributes.delete(:persisted)))
end