From a06aa15721432f8b05f3749faa7afe6ee2885716 Mon Sep 17 00:00:00 2001 From: chris Date: Tue, 1 Feb 2011 10:47:25 +0800 Subject: [PATCH] add files --- app/models/attribute_model.rb | 50 +++++++++++++++++++++++++++++++++++ app/models/user_info.rb | 9 +++++++ app/models/user_info_model.rb | 3 +++ app/models/user_role.rb | 9 +++++++ app/models/user_role_model.rb | 27 +++++++++++++++++++ 5 files changed, 98 insertions(+) create mode 100644 app/models/attribute_model.rb create mode 100644 app/models/user_info.rb create mode 100644 app/models/user_info_model.rb create mode 100644 app/models/user_role.rb create mode 100644 app/models/user_role_model.rb diff --git a/app/models/attribute_model.rb b/app/models/attribute_model.rb new file mode 100644 index 00000000..35a38be6 --- /dev/null +++ b/app/models/attribute_model.rb @@ -0,0 +1,50 @@ +class AttributeModel + + include Mongoid::Document + + field :key + field :i18n_variable_id, :type => BSON::ObjectId, :index => true + field :markup + field :locale, :type => Boolean + field :list_options, :type => Array + + embedded_in :user_role_model, :inverse_of => :attribute_models + validates_uniqueness_of :key + + # Destroy the i18n_variable + def destroy_i18n_variable + self.i18n_variable.destroy rescue nil + end + + # Get the i18n_variable + def i18n_variable + @i18n_variable ||= I18nVariable.find(self.i18n_variable_id) rescue nil + end + + # Update or create the i18n_variable record + def i18n_variable=(attr) + if self.i18n_variable_id + self.i18n_variable.update_attributes(attr) + else + var = I18nVariable.new(attr.merge({:key => self.key, :document_class => self.class, :parent_id => self.user_role_model.i18n_variable_id})) + var.save + self.i18n_variable_id = var.id + end + end + + # Convert the string list_options into an array + def select_list_options=(var) + self.list_options = var.gsub(' ', '').split(',') + end + + # Convert the array list_options into a string + def select_list_options + self.list_options.to_a.join(', ') + end + + # Check if the attribute is set to be destroyed + def should_destroy? + should_destroy.to_i == 1 rescue nil + end + +end diff --git a/app/models/user_info.rb b/app/models/user_info.rb new file mode 100644 index 00000000..d267f455 --- /dev/null +++ b/app/models/user_info.rb @@ -0,0 +1,9 @@ +class UserInfo + + include Mongoid::Document + + field :key + + embedded_in :user, :inverse_of => :user_info + +end diff --git a/app/models/user_info_model.rb b/app/models/user_info_model.rb new file mode 100644 index 00000000..66ecfdd7 --- /dev/null +++ b/app/models/user_info_model.rb @@ -0,0 +1,3 @@ +class UserInfoModel < UserAttributeModel + +end diff --git a/app/models/user_role.rb b/app/models/user_role.rb new file mode 100644 index 00000000..66a85b09 --- /dev/null +++ b/app/models/user_role.rb @@ -0,0 +1,9 @@ +class UserRole + + include Mongoid::Document + + field :key + + embedded_in :user, :inverse_of => :user_roles + +end diff --git a/app/models/user_role_model.rb b/app/models/user_role_model.rb new file mode 100644 index 00000000..22f11b99 --- /dev/null +++ b/app/models/user_role_model.rb @@ -0,0 +1,27 @@ +class UserRoleModel < UserAttributeModel + + # Destroy the i18n_variables + def destroy_i18n_variables + self.i18n_variable.destroy rescue nil + self.attribute_models.each do |attr| + attr.destroy_i18n_variable + end + end + + # Update or create the i18n_variable record + def i18n_variable=(attr) + if self.i18n_variable_id + self.i18n_variable.update_attributes(attr) rescue nil + else + var = I18nVariable.new(attr.merge({:key => self.key, :document_class => self.class})) + var.save + self.i18n_variable_id = var.id + end + end + + # Get the i18n_variable + def i18n_variable + @i18n_variable ||= I18nVariable.find(self.i18n_variable_id) rescue nil + end + +end