Class: Decidim::Conferences::Admin::UpdateConferenceSpeaker
- Inherits:
-
Decidim::Command
- Object
- Decidim::Command
- Decidim::Conferences::Admin::UpdateConferenceSpeaker
- Includes:
- AttachmentAttributesMethods
- Defined in:
- decidim-conferences/app/commands/decidim/conferences/admin/update_conference_speaker.rb
Overview
A command with all the business logic when updating a conference speaker in the system.
Instance Method Summary collapse
-
#call ⇒ Object
Executes the command.
-
#initialize(form, conference_speaker) ⇒ UpdateConferenceSpeaker
constructor
Public: Initializes the command.
Constructor Details
#initialize(form, conference_speaker) ⇒ UpdateConferenceSpeaker
Public: Initializes the command.
form - A form object with the params. conference_speaker - The ConferenceSpeaker to update
15 16 17 18 |
# File 'decidim-conferences/app/commands/decidim/conferences/admin/update_conference_speaker.rb', line 15 def initialize(form, conference_speaker) @form = form @conference_speaker = conference_speaker 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 47 48 49 50 |
# File 'decidim-conferences/app/commands/decidim/conferences/admin/update_conference_speaker.rb', line 26 def call return broadcast(:invalid) if form.invalid? return broadcast(:invalid) unless conference_speaker # We are going to assign the attributes only to handle the validation of the avatar before accessing # `update_conference_speaker!` 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_speaker.assign_attributes(attributes) if conference_speaker.valid? conference_speaker.reload transaction do update_conference_speaker! link_meetings(@conference_speaker) end broadcast(:ok) else form.errors.add(:avatar, conference_speaker.errors[:avatar]) if conference_speaker.errors.include? :avatar broadcast(:invalid) end end |