You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Right now the after_save and other related callbacks are cancelled if an error is returned. This creates an issue if we are trying to catch these situations and act on them in our models.
For example, I'd like to call this after attempting to save in Rails 5:
def check_for_errors
if self.response_errors.any?
self.response_errors.each do |attribute, errors|
errors.each do |error|
self.errors.add(attribute, error)
end
end
end
end
to convert the response_errors into Rails errors but cannot because of this issue.
The text was updated successfully, but these errors were encountered:
For anyone else curious, I'm overriding the save method based on a method provided in #178 using a concern:
module Her
module Overridable
extend ActiveSupport::Concern
def save
callback = new? ? :create : :update
method = self.class.method_for(callback)
run_callbacks :save do
run_callbacks callback do
self.class.request(to_params.merge(:_method => method, :_path => request_path)) do |parsed_data, response|
load_from_parsed_data(parsed_data)
add_errors_to_base if @response_errors.any?
return false if !response.success? || @response_errors.any?
changes_applied
end
end
end
self
end
private
def add_errors_to_base
@response_errors.each do |attr, messages|
[*messages].map { |msg| self.errors.add(attr, msg) }
end
end
end
end
which is placed in concerns/her/overridable.rb and calling it in my models like such:
class Site
include Her::Model
include Her::Overridable
Not the best solution since it will break if the save method changes, but it does work.
Right now the
after_save
and other related callbacks are cancelled if an error is returned. This creates an issue if we are trying to catch these situations and act on them in our models.For example, I'd like to call this after attempting to save in Rails 5:
to convert the
response_errors
into Rails errors but cannot because of this issue.The text was updated successfully, but these errors were encountered: