Sha256: c57832d50020dfcfc09f4913a32917a5d27e1d11c51735abbe1396ec7855b929

Contents?: true

Size: 1.15 KB

Versions: 42

Compression:

Stored size: 1.15 KB

Contents

# frozen_string_literal: true

module Thredded
  class UserMessageboardPreference < ActiveRecord::Base
    belongs_to :user_preference,
               primary_key: :user_id,
               foreign_key: :user_id,
               inverse_of: :messageboard_preferences
    belongs_to :user,
               class_name: Thredded.user_class_name,
               inverse_of: :thredded_user_messageboard_preferences
    belongs_to :messageboard

    validates :user_id, presence: true
    validates :messageboard_id, presence: true

    after_initialize :set_auto_follow_from_user_preference, unless: :persisted?

    scope :auto_followers, -> { where(auto_follow_topics: true) }

    def self.in(messageboard)
      find_or_initialize_by(messageboard_id: messageboard.id)
    end

    def user_preference
      super || build_user_preference
    end

    def user_id=(value)
      super
      set_auto_follow_from_user_preference
    end

    def user=(value)
      super
      set_auto_follow_from_user_preference
    end

    private

    def set_auto_follow_from_user_preference
      self.auto_follow_topics = user_preference.auto_follow_topics if user_id && !id
    end
  end
end

Version data entries

42 entries across 42 versions & 2 rubygems

Version Path
thredded-1.1.0 app/models/thredded/user_messageboard_preference.rb
thredded-1.0.1 app/models/thredded/user_messageboard_preference.rb
thredded-1.0.0 app/models/thredded/user_messageboard_preference.rb
thredded-0.16.16 app/models/thredded/user_messageboard_preference.rb
thredded-0.16.15 app/models/thredded/user_messageboard_preference.rb
thredded-0.16.14 app/models/thredded/user_messageboard_preference.rb
thredded-0.16.13 app/models/thredded/user_messageboard_preference.rb
thredded-0.16.12 app/models/thredded/user_messageboard_preference.rb
thredded-0.16.11 app/models/thredded/user_messageboard_preference.rb
thredded-0.16.10 app/models/thredded/user_messageboard_preference.rb
thredded-0.16.9 app/models/thredded/user_messageboard_preference.rb
thredded-0.16.8 app/models/thredded/user_messageboard_preference.rb
thredded-0.16.7 app/models/thredded/user_messageboard_preference.rb
thredded-0.16.6 app/models/thredded/user_messageboard_preference.rb
thredded-0.16.5 app/models/thredded/user_messageboard_preference.rb
thredded-0.16.4 app/models/thredded/user_messageboard_preference.rb
thredded-0.16.3 app/models/thredded/user_messageboard_preference.rb
thredded-0.16.1 app/models/thredded/user_messageboard_preference.rb
thredded-0.16.0 app/models/thredded/user_messageboard_preference.rb
thredded-0.15.5 app/models/thredded/user_messageboard_preference.rb