class AskCategorySetting include Mongoid::Document include Mongoid::Timestamps after_initialize do if !self.new_record? if self.default_setting.class != Hash && self.default_setting.class != BSON::Document self.default_setting = {} end if self.default_setting[:agree_show].nil? self.default_setting[:agree_show] = true end if self.default_setting[:agree_usage].nil? self.default_setting[:agree_usage] = false end if self.custom_fields.class != Hash && self.custom_fields.class != BSON::Document self.custom_fields = {} end self.save end end def custom_fields tmp = super tmp.select{|k,v| v['delete'] != true} end def field_name(k,locale=I18n.locale.to_s) (self.default_setting_field_name[k]&&self.default_setting_field_name[k][locale]) ? self.default_setting_field_name[k][locale] : self.default_field_name(k,locale) end def default_field_name(k,locale=I18n.locale.to_s) I18n.with_locale(locale){(['agree_show','agree_usage'].include?(k.to_s) ? I18n.t("ask.#{k}_checkbox") : I18n.t("mongoid.attributes.ask_question.#{k}"))} end def field_name_translations(k) I18n.available_locales.map{|v| [v.to_s,self.field_name(k,v.to_s)]}.to_h end field :default_setting, type: Hash,default: {ask_category_id: true,name: true,sex: false,mail: true,phone: false,appointment: false,recaptcha: false,agree_show: true,agree_usage: false} field :default_setting_field_name, type: Hash,default: {} field :custom_fields, type: Hash,default: {} field :usage_rule field :category_id end