On Jan 9, 4:20 am, Pixelguru <[email protected]> wrote:
> I'm a newbie learning Rails3 and this issue has my learning stopped in
> its tracks, so I'd greatly appreciate your help. I have a simple test
> app with a User model and name and email fields. In the console, if I
> run

Don't use attr_accessor - you're replacing the activerecord accessors
that store data in the database with standard ruby ones (that don't)

Fred


> @test = User.create!(:name => 'Test Testman', :email =>
> '[email protected]')
> I get
> => #<User id: 21, name: nil, email: nil, created_at: "2011-01-09
> 03:48:00", updated_at: "2011-01-09 03:48:00">.
> Where did my name and email data go? If I check the object I just
> created in the console,
> @test.name
> returns
> => "Test Testman"
> so it made it that far, and it also passed my model validation.
> Looking at the development log, I see NIL values for these fields in
> the SQL. Looking at the DB, I have rows being created with IDs and
> dates, but no name & email. How could data be present in the object
> but not get written into the SQL? My environment is running Ruby
> 1.9.2, Rails 3.0.3 and sqlite3-ruby 1.3.2 (I updated everything in an
> attempt to fix this) . Anyone ever see behavior like this and know the
> fix?
>
> Here's all I'm trying to do:
>
> class User < ActiveRecord::Base
>   attr_accessor :name, :email
>
>   email_regex = /\a[\w+\-...@[a-z\d\-.]+\.[a-z]+\z/i
>
>   validates :name,
>             :presence => true,
>             :length   => { :maximum => 50 }
>
>   validates :email,
>             :presence => true,
>             :format   => { :with => email_regex },
>             :uniqueness => { :case_sensitive => false }
> end

-- 
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