category.rb revision 28c312c686f25fd40963983fa3b725469eac682a
2454dfa32c93c20a8522c6ed42fe057baaac9f9aStephan Boschclass Category < ActiveRecord::Base
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen extend Dagnabit::Vertex::Activation
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
bdd36cfdba3ff66d25570a9ff568d69e1eb543cfTimo Sirainen has_and_belongs_to_many :ontologies
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen attr_accessible :name, :ontologies
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen acts_as_vertex
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen connected_by 'CEdge'
09060303d565e15d54e42b4ef722f9d3c26f5336Timo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen def relatedOntologies
2dfc39a56029045a319164975a0846593f28ce8bTimo Sirainen categories = [self]+[self.children]
9522aa5f33cc37fe8ccd0d647cc51dd3ba6a9b55Timo Sirainen Ontology.where(:category => [categories])
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen end
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen# has_and_belongs_to_many :ontologies
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen# attr_accessible :name, :parent, :parent_id
4fda77c9e9fc68feb292c4dacae1fac49dd08165Timo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen# validates :name, :uniqueness => { :scope => :ancestry, :message => 'Already taken' }
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen# has_ancestry
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
f158d9a303bb15a6848ca276c9391c7ca52e452bTimo Sirainen# def self.arrange_as_array(options={}, hash=nil)
f158d9a303bb15a6848ca276c9391c7ca52e452bTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen# hash ||= arrange(options)
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen# arr = []
6ecc5475f7efd4dcdf4ce727191693de24c5cf51Timo Sirainen# hash.each do |node, children|
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen# arr << node
6f5310d61cb7235ae5b3f42a3cd27605ace770c4Timo Sirainen# arr += arrange_as_array(options, children) unless children.nil?
6f5310d61cb7235ae5b3f42a3cd27605ace770c4Timo Sirainen# end
6f5310d61cb7235ae5b3f42a3cd27605ace770c4Timo Sirainen# arr
6f5310d61cb7235ae5b3f42a3cd27605ace770c4Timo Sirainen# end
6ecc5475f7efd4dcdf4ce727191693de24c5cf51Timo Sirainen
6f5310d61cb7235ae5b3f42a3cd27605ace770c4Timo Sirainen# def name_for_selects
6f5310d61cb7235ae5b3f42a3cd27605ace770c4Timo Sirainen# "#{'-' * depth} #{name}"
02e78eb1e4fbe13d0bd815d3d3fc7200f88a1fc4Timo Sirainen# end
02e78eb1e4fbe13d0bd815d3d3fc7200f88a1fc4Timo Sirainen
02e78eb1e4fbe13d0bd815d3d3fc7200f88a1fc4Timo Sirainen# def possible_parents
02e78eb1e4fbe13d0bd815d3d3fc7200f88a1fc4Timo Sirainen# parents = Category.arrange_as_array(:order => 'name')
6ecc5475f7efd4dcdf4ce727191693de24c5cf51Timo Sirainen# return new_record? ? parents : parents - subtree
6ecc5475f7efd4dcdf4ce727191693de24c5cf51Timo Sirainen# end
6ecc5475f7efd4dcdf4ce727191693de24c5cf51Timo Sirainen
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen# def to_s
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen# name
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen# end
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainenend
2dfc39a56029045a319164975a0846593f28ce8bTimo Sirainen