Basic foundation for public collections
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
class Collection < ApplicationRecord
|
||||
include AutoClosing, Accessible, Broadcastable, Entropic, Filterable, Workflowing
|
||||
include AutoClosing, Accessible, Broadcastable, Entropic, Filterable, Publishable, Workflowing
|
||||
|
||||
belongs_to :creator, class_name: "User", default: -> { Current.user }
|
||||
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
class Collection::Publication < ApplicationRecord
|
||||
belongs_to :collection
|
||||
|
||||
has_secure_token :key
|
||||
end
|
||||
@@ -0,0 +1,20 @@
|
||||
module Collection::Publishable
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
included do
|
||||
has_one :publication, class_name: "Collection::Publication", dependent: :destroy
|
||||
scope :published, ->{ joins(:publication) }
|
||||
end
|
||||
|
||||
def published?
|
||||
publication.present?
|
||||
end
|
||||
|
||||
def publish
|
||||
create_publication! unless published?
|
||||
end
|
||||
|
||||
def unpublish
|
||||
publication&.destroy
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user