Ruby on Rails Wednesday, December 24, 2014

Hi Anjos, 

Which is the class that is not ActiveRecord descendent ? Im assuming Taxes::Premisefinder

define an errors class this way 

class Error
  attr_accessor :errors
  def initialize
    @errors = {}
  end
  def add(key, message)
    self.errors[key] = message
  end
end

class Car
  def errors
    @errors ||= Error.new
  end
end

@car = Car.new
@car.errors.add(:name, "Invalid")

And you can define valid? method and add errors accordingly. 

Its not perfect but can be a good starting point. 


On Wed, Dec 24, 2014 at 5:08 PM, Cezinha Anjos <cezinha.anjos@gmail.com> wrote:
Hi everyone! Are you ok? I hope yes...

I'm working on a class whose its responsibility is calculate Brazilian taxes.

Its use is so and so like this:

    invoice_product = InvoiceProduct.new(filtered_params)
    operationkind = Operationkind.find(params[:operationkind_id])
    recipient = Person.find(params[:recipient_id])

    finder = Taxes::Premisefinder.new

    finder.find(
      current_user.licenciated,
      recipient.city.uf,
      operationkind,
      invoice_product.product.taxgroup,
      invoice_product)

    render json: invoice_product, status: :created



It's used in a controller to respond as json in a rest API. It's not a ActiveRecord descendent class.

My doubt is: what is the best way to collect the possible errors generated from Taxes::Premisefinder?

Should I do Taxes::Premisefinder generates exceptions and catch them on the controller?

Should I use similar strategy of ActiveRecord using Errrors class?

In this case, what's the Rails way to work?

Thanks!

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/f5546b00-c752-476a-86cc-3e19621152ce%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/CAFKVRj-f6v1ySsT_1v1okX07V_z7PvZBNQEq4cv5c7oe3JFCtw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment