Sha256: 05f7ad415207d916582641d2a6ec446e44a160d1dea45096f3ad7d96e8840266

Contents?: true

Size: 808 Bytes

Versions: 13

Compression:

Stored size: 808 Bytes

Contents

module Concerns
  module Model
    module BaseListItem
      extend ActiveSupport::Concern
      
      included do
        belongs_to :list
        belongs_to :thing, polymorphic: true
        
        validates :list_id, presence: true
        validates :thing_type, presence: true
        validates :thing_id, presence: true
        
        #pusherable "#{Rails.env}_channel"
        
        def thing=(thing)
          thing.save if thing.new_record?
          
          self.thing_type = thing.class.name; self.thing_id = thing.id
          
          if self.respond_to?(:list_item_id) && self.list.present?
            self.list_item ||= self.list.items.find_or_create_by_thing_type_and_thing_id(thing_type, thing_id)
          end
          
          thing
        end
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
voluntary-0.7.1 lib/concerns/model/base_list_item.rb
voluntary-0.7.0 lib/concerns/model/base_list_item.rb
voluntary-0.6.0 lib/concerns/model/base_list_item.rb
voluntary-0.5.2 lib/concerns/model/base_list_item.rb
voluntary-0.5.1 lib/concerns/model/base_list_item.rb
voluntary-0.5.0 lib/concerns/model/base_list_item.rb
voluntary-0.4.0 lib/concerns/model/base_list_item.rb
voluntary-0.3.0 lib/concerns/model/base_list_item.rb
voluntary-0.2.4 lib/concerns/model/base_list_item.rb
voluntary-0.2.3 lib/concerns/model/base_list_item.rb
voluntary-0.2.2 lib/concerns/model/base_list_item.rb
voluntary-0.2.1 lib/concerns/model/base_list_item.rb
voluntary-0.2.0 lib/concerns/model/base_list_item.rb