class Site METAS = ['description', 'keywords'] include Mongoid::Document include Mongoid::Timestamps field :in_use_locales, :type => Array field :valid_locales, :type => Array field :roaming_id field :private_key, :type => Binary field :public_key, :type => Binary field :title_always_on, :type => Boolean, :default => false field :mail_settings, :type => Hash field :school field :department field :title, localize: true field :footer, localize: true field :sub_menu, localize: true has_many :site_metas, :autosave => true, :dependent => :destroy def generate_keys private_key = OpenSSL::PKey::RSA.generate(2048) self.public_key = private_key.public_key.to_s self.private_key = private_key.to_s end def registered? !self.roaming_id.blank? end def up_to_date? res = res.split('rails_3_1').pop.gsub('(', '').gsub(')','').strip rescue nil res.eql?('local out of date') ? false : true end METAS.each do |meta| define_method meta do fetch_meta = self.site_metas.where(key: meta).limit(1) fetch_meta.blank? ? nil : fetch_meta[0].i18n_variable end define_method "#{meta}=" do |values| if a = self.send(meta) a.update_attributes(values) else a = self.site_metas.build(key: meta) a.build_i18n_variable(values) end end end end