Sha256: 2ff9c41478f5385dd18dff9b7ed72b24af49c24b9329c1f5a2bf8963c44d7d87
Contents?: true
Size: 1.7 KB
Versions: 5
Compression:
Stored size: 1.7 KB
Contents
# frozen_string_literal: true # Copyright (c) 2008-2013 Michael Dvorkin and contributors. # # Fat Free CRM is freely distributable under the terms of MIT license. # See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php #------------------------------------------------------------------------------ # == Schema Information # # Table name: preferences # # id :integer not null, primary key # user_id :integer # name :string(32) default(""), not null # value :text # created_at :datetime # updated_at :datetime # class Preference < ActiveRecord::Base belongs_to :user, optional: true #------------------------------------------------------------------- def [](name) # Following line is to preserve AR relationships return super(name) if name.to_s == "user_id" # get the value of belongs_to return cached_prefs[name.to_s] if cached_prefs.key?(name.to_s) cached_prefs[name.to_s] = if user.present? && pref = Preference.find_by_name_and_user_id(name.to_s, user.id) JSON.parse(Base64.decode64(pref.value), symbolize_name: true) end end #------------------------------------------------------------------- def []=(name, value) return super(name, value) if name.to_s == "user_id" # set the value of belongs_to encoded = Base64.encode64(value.to_json) if pref = Preference.find_by(name: name.to_s, user_id: user.id) pref.update_attribute(:value, encoded) else Preference.create(user: user, name: name.to_s, value: encoded) end cached_prefs[name.to_s] = value end def cached_prefs @cached_prefs ||= {} end ActiveSupport.run_load_hooks(:fat_free_crm_preference, self) end
Version data entries
5 entries across 5 versions & 1 rubygems