Ruby on Rails Wednesday, October 28, 2015

Hi!

My reject_if filter is not working:

2.2.3 :002 > params = { lead: {name: 'Eduardo', lastName: 'Campestrini', job_attributes: { company: 'RD' } } }
 => {:lead=>{:name=>"Eduardo", :lastName=>"Campestrini", :job_attributes=>{:company=>"RD"}}} 
2.2.3 :003 > lead = Lead.create(params[:lead])
   (0.1ms)  begin transaction
  SQL (1.7ms)  INSERT INTO "leads" ("name", "lastName", "created_at", "updated_at") VALUES (?, ?, ?, ?)  [["name", "Eduardo"], ["lastName", "Campestrini"], ["created_at", "2015-10-29 03:35:49.845738"], ["updated_at", "2015-10-29 03:35:49.845738"]]
   (1.2ms)  commit transaction
 => #<Lead id: 11, name: "Eduardo", lastName: "Campestrini", created_at: "2015-10-29 03:35:49", updated_at: "2015-10-29 03:35:49"> 
2.2.3 :004 > 


class Lead < ActiveRecord::Base
  has_one :contact, dependent: :destroy
  has_one :job, dependent: :destroy

  accepts_nested_attributes_for :contact, reject_if: :reject_contact
  accepts_nested_attributes_for :job, reject_if: :reject_job

  validates :name, presence: true, length: { maximum: 50 }
  validates :lastName, presence: true, length: { maximum: 100 }

  private
    def reject_contact(attributes)
      attributes['phone'].blank?
      attributes['website'].blank?
    end

    def reject_job(attributes)
      attributes['company'].blank?
      attributes['title'].blank?
    end
end

class Job < ActiveRecord::Base
  belongs_to :lead
  validates :company, presence: true, length: { maximum: 20 }
  validates :title, presence: true, length: { maximum: 50 }
end


class Contact < ActiveRecord::Base
  belongs_to :lead
  validates :phone, presence: true, length: { maximum: 20 }
  validates :website, presence: true, length: { maximum: 50 }
end

Thank,
Eduardo

--
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/8abb9c78-981c-45d7-84ca-5e49948fb946%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment