Class: EmbeddedAsset
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- EmbeddedAsset
- Defined in:
- app/models/embedded_asset.rb
Overview
== Schema Information
Table name: embedded_assets
Database name: primary
id :bigint not null, primary key
asset_type :string
options :jsonb not null
parent_type :string not null
type :string
uuid :uuid not null
created_at :datetime not null
updated_at :datetime not null
asset_id :bigint
parent_id :bigint not null
Indexes
idx_embedded_assets_on_asset_and_type (asset_id,asset_type,type)
idx_embedded_assets_parent_asset (parent_type,parent_id,asset_type,asset_id)
index_embedded_assets_on_asset (asset_type,asset_id)
index_embedded_assets_on_type (type)
index_embedded_assets_on_uuid (uuid)
Direct Known Subclasses
EmbeddedFaqAsset, EmbeddedImageAsset, EmbeddedProductAsset, EmbeddedVideoAsset
Constant Summary
Constants included from Models::Schedulable
Models::Schedulable::SIMPLE_FORM_OPTIONS
Instance Attribute Summary collapse
-
#uuid ⇒ String
Public UUID used in URLs.
Belongs to collapse
-
#asset ⇒ Asset
Optional for FAQs (multiple IDs in options).
- #parent ⇒ ActiveRecord::Base
Class Method Summary collapse
-
.faqs ⇒ ActiveRecord::Relation<EmbeddedAsset>
A relation of EmbeddedAssets that are faqs.
-
.for_asset_type(asset_type) ⇒ Class
Factory method to create the appropriate subclass.
-
.for_parent ⇒ ActiveRecord::Relation<EmbeddedAsset>
A relation of EmbeddedAssets that are for parent.
-
.images ⇒ ActiveRecord::Relation<EmbeddedAsset>
A relation of EmbeddedAssets that are images.
-
.products ⇒ ActiveRecord::Relation<EmbeddedAsset>
A relation of EmbeddedAssets that are products.
-
.videos ⇒ ActiveRecord::Relation<EmbeddedAsset>
A relation of EmbeddedAssets that are videos.
Instance Method Summary collapse
-
#render_options ⇒ Object
Subclasses override this to return asset-type-specific options.
-
#to_param ⇒ Object
Use UUID as the URL parameter instead of ID.
Methods inherited from ApplicationRecord
ransackable_associations, ransackable_attributes, ransackable_scopes, ransortable_attributes, #to_relation
Methods included from Models::Schedulable
Methods included from Models::AfterCommittable
Methods included from Models::EventPublishable
Instance Attribute Details
#uuid ⇒ String
Returns Public UUID used in URLs.
37 |
# File 'app/models/embedded_asset.rb', line 37 validates :uuid, presence: true |
Class Method Details
.faqs ⇒ ActiveRecord::Relation<EmbeddedAsset>
A relation of EmbeddedAssets that are faqs. Active Record Scope
48 |
# File 'app/models/embedded_asset.rb', line 48 scope :faqs, -> { where(type: 'EmbeddedFaqAsset') } |
.for_asset_type(asset_type) ⇒ Class
Factory method to create the appropriate subclass.
65 66 67 68 69 70 71 72 73 |
# File 'app/models/embedded_asset.rb', line 65 def self.for_asset_type(asset_type) case asset_type.to_s when 'Image' then EmbeddedImageAsset when 'Video' then EmbeddedVideoAsset when 'Faq' then EmbeddedFaqAsset when 'Item', 'Product' then EmbeddedProductAsset else self end end |
.for_parent ⇒ ActiveRecord::Relation<EmbeddedAsset>
A relation of EmbeddedAssets that are for parent. Active Record Scope
45 |
# File 'app/models/embedded_asset.rb', line 45 scope :for_parent, ->(parent) { where(parent: parent) } |
.images ⇒ ActiveRecord::Relation<EmbeddedAsset>
A relation of EmbeddedAssets that are images. Active Record Scope
46 |
# File 'app/models/embedded_asset.rb', line 46 scope :images, -> { where(type: 'EmbeddedImageAsset') } |
.products ⇒ ActiveRecord::Relation<EmbeddedAsset>
A relation of EmbeddedAssets that are products. Active Record Scope
49 |
# File 'app/models/embedded_asset.rb', line 49 scope :products, -> { where(type: 'EmbeddedProductAsset') } |
.videos ⇒ ActiveRecord::Relation<EmbeddedAsset>
A relation of EmbeddedAssets that are videos. Active Record Scope
47 |
# File 'app/models/embedded_asset.rb', line 47 scope :videos, -> { where(type: 'EmbeddedVideoAsset') } |
Instance Method Details
#asset ⇒ Asset
Optional for FAQs (multiple IDs in options)
Validations:
30 |
# File 'app/models/embedded_asset.rb', line 30 belongs_to :asset, polymorphic: true, optional: true |
#parent ⇒ ActiveRecord::Base
29 |
# File 'app/models/embedded_asset.rb', line 29 belongs_to :parent, polymorphic: true |
#render_options ⇒ Object
Subclasses override this to return asset-type-specific options
57 58 59 |
# File 'app/models/embedded_asset.rb', line 57 def .symbolize_keys end |
#to_param ⇒ Object
Use UUID as the URL parameter instead of ID
52 53 54 |
# File 'app/models/embedded_asset.rb', line 52 def to_param uuid end |