Class: Relation

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/relation.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.seed(source, target, roles = nil) ⇒ Object



68
69
70
71
72
73
74
# File 'app/models/relation.rb', line 68

def self.seed source, target, roles = nil
  (roles.present? ? Role.find_or_create_named(roles) : [ nil ]).map do |role|
    create source_type: source,
           target_type: target,
           role:        role
  end
end

.with_roles(&block) ⇒ Object



62
63
64
65
66
# File 'app/models/relation.rb', line 62

def self.with_roles &block
  joins(:role).merge(
    Role.instance_eval &block
  ).uniq
end

Instance Method Details

#abstract?Boolean

Returns:

  • (Boolean)


82
83
84
# File 'app/models/relation.rb', line 82

def abstract?
  not (source_id or target_id)
end

#name=(role_name) ⇒ Object



77
78
79
80
# File 'app/models/relation.rb', line 77

def name= role_name
  self.role = role_name &&
    Role.find_or_initialize_by(name: role_name)
end