Active Record, changes from.. to..

82 views
Skip to first unread message

angelo capilleri

unread,
Dec 17, 2012, 9:14:33 AM12/17/12
to rubyonra...@googlegroups.com
Hi,
I'm thinking about a method that responds true or false for the changes of attributes from a value to another to trace a little bit the status of an AR object.

Ex.
class Book < ActiveRecord::Base
  STATUS_DELIVER = [0,1]
  before_save :send_mail_to_customer

  def send_mail_to_customer
    UserMailer.send_mail_to_customer if self.changes['status'] == [0, 1]
  end
end

It' a simple case but when complexity grows up a method like

 def send_mail_to_customer
   UserMailer.send_mail_to_customer if self.status.changes(from: 0, to: 1)
 end

 Maybe is more mantenible and readable.

Peter Brown

unread,
Dec 18, 2012, 7:51:45 AM12/18/12
to rubyonra...@googlegroups.com
I believe you can do this already with ActiveModel::Dirty:

def send_mail_to_customer
  UserMailer.send_mail_to_customer if status_change == [0, 1]
end

Yasuharu Ozaki

unread,
Dec 18, 2012, 8:32:59 PM12/18/12
to rubyonra...@googlegroups.com
This feature "from" and "to" was interesting, I extracted this to a gem

https://github.com/YasuOza/activemodel-attribute_changed_specification/

I wish this gem makes your happy.
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Core" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/rubyonrails-core/-/xAAFpU6U2EoJ.
>
> To post to this group, send email to rubyonra...@googlegroups.com.
> To unsubscribe from this group, send email to
> rubyonrails-co...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/rubyonrails-core?hl=en.



--
Yasuharu Ozaki
E-mail : yasuhar...@gmail.com

angelo capilleri

unread,
Dec 19, 2012, 4:02:12 AM12/19/12
to rubyonra...@googlegroups.com
Very nice! We coult try to made a Pr to Rails...
Reply all
Reply to author
Forward
0 new messages