Models
The models in Decidim are just plain ActiveRecord models, so you can use all the methods that come with it.
A model class example would be:
# frozen_string_literal: true
# app/models/decidim/my_module/my_resource.rb
module Decidim
module MyModule
class MyResource < Decidim::MyModule::ApplicationRecord
include Decidim::HasComponent
include Decidim::Traceable
include Decidim::Loggable
include Decidim::Authorable
include Decidim::TranslatableResource
end
end
end
Concerns
The concerns are used to share code between models. They are located in app/models/concerns.
Most commonly used concerns are:
-
Decidim::ActsAsAuthor -
Decidim::ActsAsTree -
Decidim::Amendable -
Decidim::DownloadYourData -
Decidim::FilterableResource -
Decidim::Fingerprintable -
Decidim::FriendlyDates -
Decidim::HasArea -
Decidim::HasAttachmentCollections -
Decidim::HasAttachments -
Decidim::HasCategory -
Decidim::HasComponent -
Decidim::HasPrivateUsers -
Decidim::HasReference -
Decidim::HasResourcePermission -
Decidim::HasUploadValidations -
Decidim::Loggable -
Decidim::NewsletterParticipant -
Decidim::Paddable -
Decidim::Participable -
Decidim::ParticipatorySpaceResourceable -
Decidim::ParticipatorySpaceUser -
Decidim::Publicable -
Decidim::Randomable -
Decidim::RecordEncryptor -
Decidim::Resourceable -
Decidim::ScopableParticipatorySpace -
Decidim::ScopableResource -
Decidim::Searchable
Module specific concerns
-
Decidim::Forms::HasQuestionnaire -
Decidim::Initiatives::HasArea -
Decidim::Initiatives::InitiativeSlug -
Decidim::Proposals::CommentableCollaborativeDraft -
Decidim::Proposals::CommentableProposal -
Decidim::Proposals::ParticipatoryTextSection -
Decidim::Proposals::Valuatable -
Decidim::Templates::Templatable