2009/9/14 Kendall Buchanan <[email protected]>:
>
> Colin Law wrote:
>> 2009/9/14 Kendall Buchanan <[email protected]>:
>>> saved to the database. I'd like it to not save.
>>>
>>> Am I missing something simple?
>>
>> Are you sure it is getting saved?  Are you checking the return from
>> save, it should return false if the save fails.  If you still think it
>> is not functioning correctly post the relevant section of controller
>> code here.
>>
>> Colin
>
> Sure.
>
> Yeah, it's getting saved by an INSERT statement. Here's the controller
> code:
>
>  def create
>   �...@activity = Activity.find(params[:activity_id])
>   �...@payment_application =
> @activity.payment_applications.new(params[:payment_application])
>
>    respond_to do |format|
>      if @payment_application.save

I don't know if it is a factor but I have never tried putting the save
inside the respond_to. The first thing I would do is to take it out to
see if that is a factor.  Unless you know it is not that.

How do you know that valid? is failing at this point?

Colin

>        format.html { redirect_to(@payment_application) }
>        format.js { index }
>        format.apply_to_activity { index }
>        format.xml  { render :xml => @payment_application, :status =>
> :created, :location => @payment_application }
>      else
>        format.html { render :action => "new" }
>        format.js { render :action => "new", :status =>
> :unprocessable_entity }
>        format.apply_to_activity { index }
>        format.xml  { render :xml => @payment_application.errors,
> :status => :unprocessable_entity }
>      end
>    end
>  end
>
> And the model code:
>
> class PaymentApplication < ActiveRecord::Base
>  belongs_to :activity
>  belongs_to :payment
>
>  after_create :apply_full, :if => :apply_full_payment
>
>  attr_accessor :apply_full_payment
>  attr_accessor :amount_as_str
>
>  acts_as_ferret :fields => { :payment_id => { :store => :yes },
>                              :check_num => { :store => :yes },
>                              :comments => { :store => :yes } }
>
>  validate :total_applications_cannot_exceed_payment_amount
>  validate :cannot_exceed_activity_price
>  validates_numericality_of :amount
>
>  def amount=(value)
>    unless value.blank?
>      write_attribute(:amount, Accounting.string_as_int(value))
>    else
>      write_attribute(:amount, nil)
>    end
>  end
>
>  protected
>
>    def apply_full
>      write_attribute(:amount, self.payment.amount)
>      write_attribute(:comments, self.payment.comments)
>      self.save
>    end
>
>    def total_applications_cannot_exceed_payment_amount
>      if self.payment
>        if self.payment.payment_applications.sum(:amount) + self.amount
>> self.payment.amount
>          self.errors.add(:amount, "of all payment applications cannot
> exceed total payment amount.")
>        end
>      end
>    end
>
>    def cannot_exceed_activity_price
>      if self.payment
>        if self.payment.payment_applications.sum(:amount) + self.amount
>> self.activity.price
>          self.errors.add(:amount, "cannot exceed activity price.")
>        end
>      end
>    end
>
> end
>
> Mucho thankso for the response.
>
> --
> Posted via http://www.ruby-forum.com/.
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to