Class: UserPreference

Inherits:
MainClusterwide::ApplicationRecord show all
Includes:
IgnorableColumns
Defined in:
app/models/user_preference.rb

Constant Summary collapse

NOTES_FILTERS =

We could use enums, but Rails 4 doesn’t support multiple enum options with same name for multiple fields, also it creates extra methods that aren’t really needed here.

{ all_notes: 0, only_comments: 1, only_activity: 2 }.freeze

Constants inherited from ApplicationRecord

ApplicationRecord::MAX_PLUCK

Constants included from ResetOnUnionError

ResetOnUnionError::MAX_RESET_PERIOD

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from ApplicationRecord

cached_column_list, #create_or_load_association, declarative_enum, default_select_columns, id_in, id_not_in, iid_in, pluck_primary_key, primary_key_in, #readable_by?, safe_ensure_unique, safe_find_or_create_by, safe_find_or_create_by!, #to_ability_name, underscore, where_exists, where_not_exists, with_fast_read_statement_timeout, without_order

Methods included from SensitiveSerializableHash

#serializable_hash

Class Method Details

.notes_filtersObject



43
44
45
46
47
48
49
# File 'app/models/user_preference.rb', line 43

def notes_filters
  {
    s_('Notes|Show all activity') => NOTES_FILTERS[:all_notes],
    s_('Notes|Show comments only') => NOTES_FILTERS[:only_comments],
    s_('Notes|Show history only') => NOTES_FILTERS[:only_activity]
  }
end

Instance Method Details

#notes_filter_for(resource) ⇒ Object

Returns the current discussion filter for a given issuable or issuable type.



66
67
68
# File 'app/models/user_preference.rb', line 66

def notes_filter_for(resource)
  self[notes_filter_field_for(resource)]
end

#render_whitespace_in_codeObject



99
100
101
102
103
104
# File 'app/models/user_preference.rb', line 99

def render_whitespace_in_code
  value = read_attribute(:render_whitespace_in_code)
  return value unless value.nil?

  self.class.column_defaults['render_whitespace_in_code']
end

#render_whitespace_in_code=(value) ⇒ Object



106
107
108
109
110
111
112
113
# File 'app/models/user_preference.rb', line 106

def render_whitespace_in_code=(value)
  if value.nil?
    default = self.class.column_defaults['render_whitespace_in_code']
    super(default)
  else
    super(value)
  end
end

#set_notes_filter(filter_id, issuable) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
# File 'app/models/user_preference.rb', line 52

def set_notes_filter(filter_id, issuable)
  # No need to update the column if the value is already set.
  if filter_id && NOTES_FILTERS.value?(filter_id)
    field = notes_filter_field_for(issuable)
    self[field] = filter_id

    save if attribute_changed?(field)
  end

  notes_filter_for(issuable)
end

#tab_widthObject



70
71
72
# File 'app/models/user_preference.rb', line 70

def tab_width
  read_attribute(:tab_width) || self.class.column_defaults['tab_width']
end

#tab_width=(value) ⇒ Object



74
75
76
77
78
79
80
81
# File 'app/models/user_preference.rb', line 74

def tab_width=(value)
  if value.nil?
    default = self.class.column_defaults['tab_width']
    super(default)
  else
    super(value)
  end
end

#time_display_relativeObject



83
84
85
86
87
88
# File 'app/models/user_preference.rb', line 83

def time_display_relative
  value = read_attribute(:time_display_relative)
  return value unless value.nil?

  self.class.column_defaults['time_display_relative']
end

#time_display_relative=(value) ⇒ Object



90
91
92
93
94
95
96
97
# File 'app/models/user_preference.rb', line 90

def time_display_relative=(value)
  if value.nil?
    default = self.class.column_defaults['time_display_relative']
    super(default)
  else
    super(value)
  end
end