Sha256: c299dfa1719bbc8796c2f26cda60f5a0240e85b4a650f980ba1cb5882e8a7209
Contents?: true
Size: 1.61 KB
Versions: 1
Compression:
Stored size: 1.61 KB
Contents
class Rally < ActiveRecord::Base belongs_to :convert has_many :convert_meta_types, :through => :convert #has_many :ci_metas, :through => :convert_meta_types #has_many :cs_metas, :through => :convert_meta_types #Set meta data for applicable options-- don't store nil data (waste of space) def set_meta_data(options) options.each do |option| cmt = convert_meta_types.find_by_var(option[0].to_s) #Create cmt if it doesn't current exist (unless nil) if cmt.nil? && !option[1].nil? #infer type meta_type = "ci_meta" if option[1].is_a?(Integer) meta_type = "cs_meta" if option[1].is_a?(String) cmt = convert.convert_meta_types.create!(:name => option[0].to_s, :var => option[0].to_s, :meta_type => meta_type) end cmt.meta.create!(:rally_id => self.id, :data => option[1]) if !option[1].nil? end end def meta_for( var ) cmt = convert_meta_types.find_by_var( var.to_s ) return nil if cmt.nil? m = cmt.meta.find_by_rally_id( self.id ) return nil if m.nil? return m.data end def all_metas res = {} self.convert_meta_types.each do |cmt| r = res.count begin if cmt.var =~ /(\w)[_]id/i if $1.classify item = $1.classify.find( cmt.var ) if item.respond_to?(:name) res.merge!({ $1 => item.name }) elsif item.respond_to?(:title) res.merge!({ $1 => item.title }) end end end rescue end res.merge!({ cmt.var => rally.meta( cmt.var ) }) if res.count == r end res end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
mountain-goat-0.0.15 | lib/mountain-goat/models/rally.rb |