module BazaModels::Model::HasOneRelations

Public Class Methods

included(base) click to toggle source
# File lib/baza_models/model/has_one_relations.rb, line 2
def self.included(base)
  base.extend(ClassMethods)
end

Private Instance Methods

destroy_has_one_relations() click to toggle source
# File lib/baza_models/model/has_one_relations.rb, line 77
def destroy_has_one_relations
  self.class.relationships.each do |relation_name, relation|
    next if relation.fetch(:type) != :has_one || relation[:dependent] != :destroy

    model = __send__(relation_name)

    if model && !model.destroy
      errors.add(:base, model.errors.full_messages.join(". "))
      return false
    end
  end

  true
end
restrict_has_one_relations() click to toggle source
# File lib/baza_models/model/has_one_relations.rb, line 64
def restrict_has_one_relations
  self.class.relationships.each do |relation_name, relation|
    next if relation.fetch(:type) != :has_one || relation[:dependent] != :restrict_with_error

    if __send__(relation_name)
      errors.add(:base, "can't be destroyed because it contains #{relation_name}")
      return false
    end
  end

  true
end