Forum: Ruby on Rails Issue with validation

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Jason W. (Guest)
on 2006-04-09 03:34
Hello, I just got hold of the book 'Agile Web D. with Rails'
and I have been following along.
I just went through a segment of trying to add validation to a form.

I added the following code, as instructed, to my app/models/Products.rb
file:

protected
  def validate
    errors.add(:Price, "should be positive") unless Price.nil? || Price
>= 0.01
  end

with the exception of the upper-case P on Price, this is letter for
letter (unless I just can't read today).

When I try and submit the form I get this error.


NameError in Admin#create

uninitialized constant Price


Can' figure this out at all. I've been following the tutorial to the
letter and I'm sure if they had had this problem it would have been
mentioned. Anyone have any ideas? I'm using the latest release of RoR,
Mac OSX and MySQL 4.1

Thanks
Clint Checketts (Guest)
on 2006-04-09 03:43
(Received via mailing list)
On 4/8/06, Jason W. <removed_email_address@domain.invalid> wrote:
>
> protected
>   def validate
>     errors.add(:Price, "should be positive") unless Price.nil? || Price >=
> 0.01
>   end
>
> with the exception of the upper-case P on Price, this is letter for letter
> (unless I just can't read today).
>

Uppercase words are considered constants or class names. lower case
'price'
would be a local variable, you probably want to use '@price' (note the
lower
case too) since that would be an instance variable.

So I'd try:

protected
  def validate
    errors.add(:price, "should be positive") unless @price.nil? ||
@price >=
0.01
  end


I'm still just a noob though so take my advice with a grain of salt.

-Clint
Jason W. (Guest)
on 2006-04-09 04:10
Thanks, Clint,

Issue resolved, it did work as typed once I switched the var to
lower-case. I must have skipped over that part.
This topic is locked and can not be replied to.