Sha256: 35fa2c8c5debfede8e917267f542c4e995f8b45d0df4cb774eac821f8c4b35b1

Contents?: true

Size: 1.14 KB

Versions: 4

Compression:

Stored size: 1.14 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,
               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

4 entries across 4 versions & 1 rubygems

Version Path
thredded-0.12.1 app/models/thredded/user_messageboard_preference.rb
thredded-0.12.0 app/models/thredded/user_messageboard_preference.rb
thredded-0.11.1 app/models/thredded/user_messageboard_preference.rb
thredded-0.11.0 app/models/thredded/user_messageboard_preference.rb