Class: Decidim::Conferences::Admin::UpdatePartner
- Inherits:
-
Decidim::Command
- Object
- Decidim::Command
- Decidim::Conferences::Admin::UpdatePartner
- Includes:
- AttachmentAttributesMethods
- Defined in:
- decidim-conferences/app/commands/decidim/conferences/admin/update_partner.rb
Overview
A command with all the business logic when updating a conference partner in the system.
Instance Method Summary collapse
-
#call ⇒ Object
Executes the command.
-
#initialize(form, conference_partner) ⇒ UpdatePartner
constructor
Public: Initializes the command.
Constructor Details
#initialize(form, conference_partner) ⇒ UpdatePartner
Public: Initializes the command.
form - A form object with the params. conference_partner - The ConferencePartner to update
15 16 17 18 |
# File 'decidim-conferences/app/commands/decidim/conferences/admin/update_partner.rb', line 15 def initialize(form, conference_partner) @form = form @conference_partner = conference_partner end |
Instance Method Details
#call ⇒ Object
Executes the command. Broadcasts these events:
-
:ok when everything is valid.
-
:invalid if the form wasn’t valid and we couldn’t proceed.
Returns nothing.
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'decidim-conferences/app/commands/decidim/conferences/admin/update_partner.rb', line 26 def call return broadcast(:invalid) if form.invalid? return broadcast(:invalid) unless conference_partner # We are going to assign the attributes only to handle the validation of the avatar before accessing # `update_conference_partner!` which uses `update!`. Without this step, the image validation may render # an ActiveRecord::RecordInvalid error # After we assign and check if the object is valid, we reload the model to let it be handled the old way # If there is an error we add the error to the form conference_partner.assign_attributes(attributes) if conference_partner.valid? conference_partner.reload update_conference_partner! broadcast(:ok) else form.errors.add(:logo, conference_partner.errors[:logo]) if conference_partner.errors.include? :logo broadcast(:invalid) end end |