Hi,

Have searched and searched the group and the net with no joy on
this...

I have set up users table and am trying to insert newly registered
users with the following code from:

class UserController < ApplicationController

  def index
  end

  def register
    @title = "Register"
    if request.post?
      #raise params[:user].inspect
      @user = User.new(params[:user])
      if @user.save
        render :text => "User created!"
      end
    end
  end
end


I receive the following error:

ActiveRecord::StatementInvalid in UserController#register

Could not find table 'users'
RAILS_ROOT: /Users/Will/Development/rails_space

Application Trace | Framework Trace | Full Trace
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.2/lib/active_record/
connection_adapters/sqlite3_adapter.rb:29:in `table_structure'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.2/lib/active_support/
core_ext/object/misc.rb:39:in `returning'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.2/lib/active_record/
connection_adapters/sqlite3_adapter.rb:28:in `table_structure'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.2/lib/active_record/
connection_adapters/sqlite_adapter.rb:213:in `columns'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.2/lib/active_record/
base.rb:1276:in `columns'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.2/lib/active_record/
base.rb:3008:in `attributes_from_column_definition_without_lock'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.2/lib/active_record/
locking/optimistic.rb:66:in `attributes_from_column_definition'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.2/lib/active_record/
base.rb:2435:in `initialize'
/Users/Will/Development/rails_space/app/controllers/user_controller.rb:
10:in `new'
/Users/Will/Development/rails_space/app/controllers/user_controller.rb:
10:in `register'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.2/lib/action_controller/
base.rb:1322:in `send'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.2/lib/action_controller/
base.rb:1322:in `perform_action_without_filters'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.2/lib/action_controller/
filters.rb:617:in `call_filters'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.2/lib/action_controller/
filters.rb:610:in `perform_action_without_benchmark'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.2/lib/action_controller/
benchmarking.rb:68:in `perform_action_without_rescue'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.2/lib/active_support/
core_ext/benchmark.rb:17:in `ms'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.2/lib/active_support/
core_ext/benchmark.rb:10:in `realtime'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.2/lib/active_support/
core_ext/benchmark.rb:17:in `ms'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.2/lib/action_controller/
benchmarking.rb:68:in `perform_action_without_rescue'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.2/lib/action_controller/
rescue.rb:160:in `perform_action_without_flash'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.2/lib/action_controller/
flash.rb:141:in `perform_action'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.2/lib/action_controller/
base.rb:523:in `send'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.2/lib/action_controller/
base.rb:523:in `process_without_filters'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.2/lib/action_controller/
filters.rb:606:in `process'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.2/lib/action_controller/
base.rb:391:in `process'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.2/lib/action_controller/
base.rb:386:in `call'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.2/lib/action_controller/
routing/route_set.rb:433:in `call'


It looks as if Rails is trying to find that table using the sqlite3
adapter, bt my db is configured to use mysql. Here is database.yml:

# MySQL.  Versions 4.1 and 5.0 are recommended.
#
# Install the MySQL driver:
#   gem install mysql
# On Mac OS X:
#   sudo gem install mysql -- --with-mysql-dir=/usr/local/mysql
# On Mac OS X Leopard:
#   sudo env ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql-
config=/usr/local/mysql/bin/mysql_config
#       This sets the ARCHFLAGS environment variable to your native
architecture
# On Windows:
#   gem install mysql
#       Choose the win32 build.
#       Install MySQL and put its /bin directory on your path.
#
# And be sure to use new-style password hashing:
#   http://dev.mysql.com/doc/refman/5.0/en/old-client.html
development:
  adapter: mysql
  encoding: utf8
  reconnect: false
  database: rails_space_development
  pool: 5
  username: root
  password:
  socket: /tmp/mysql.sock

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  adapter: mysql
  encoding: utf8
  reconnect: false
  database: rails_space_test
  pool: 5
  username: root
  password:
  socket: /tmp/mysql.sock

production:
  adapter: mysql
  encoding: utf8
  reconnect: false
  database: rails_space_production
  pool: 5
  username: root
  password:
  socket: /tmp/mysql.sock

I have verified existence of the table and using the Ruby console can
add records no problem.

Here is the user.rb model file:
class User < ActiveRecord::Base
  # Max & min lengths for all fields
  SCREEN_NAME_MIN_LENGTH = 4
  SCREEN_NAME_MAX_LENGTH = 20
  PASSWORD_MIN_LENGTH = 4
  PASSWORD_MAX_LENGTH = 40
  EMAIL_MAX_LENGTH = 50
  SCREEN_NAME_RANGE = SCREEN_NAME_MIN_LENGTH..SCREEN_NAME_MAX_LENGTH
  PASSWORD_RANGE = PASSWORD_MIN_LENGTH..PASSWORD_MAX_LENGTH

  # Text box sizes for display in the views
  SCREEN_NAME_SIZE = 20
  PASSWORD_SIZE = 10
  EMAIL_SIZE = 30

  validates_uniqueness_of :screen_name, :email
  validates_length_of :screen_name, :within => SCREEN_NAME_RANGE
  validates_length_of :password, :within => PASSWORD_RANGE
  validates_length_of :email, :maximum => EMAIL_MAX_LENGTH

  validates_format_of :screen_name,
                      :with => /^[A-Z0-9_]*$/i,
                      :message => "must contain only letters, " +
                                  "numbers, and underscores"
  validates_format_of :email,
                      :with => /^[A-Z0-9._%-]+@([A-Z0-9-]+\.)+[A-Z]
{2,4}$/i,
                      :message => "must be a valid email address"

end

Here is my environment.rb file:
# Be sure to restart your server when you modify this file

# Specifies gem version of Rails to use when vendor/rails is not
present
RAILS_GEM_VERSION = '2.3.2' unless defined? RAILS_GEM_VERSION

# Bootstrap the Rails environment, frameworks, and default
configuration
require File.join(File.dirname(__FILE__), 'boot')

Rails::Initializer.run do |config|
  # Settings in config/environments/* take precedence over those
specified here.
  # Application configuration should go into files in config/
initializers
  # -- all .rb files in that directory are automatically loaded.

  # Add additional load paths for your own custom dirs
  # config.load_paths += %W( #{RAILS_ROOT}/extras )

  # Specify gems that this application depends on and have them
installed with rake gems:install
  # config.gem "bj"
  # config.gem "hpricot", :version => '0.6', :source => "http://
code.whytheluckystiff.net"
  # config.gem "sqlite3-ruby", :lib => "sqlite3"
  # config.gem "aws-s3", :lib => "aws/s3"

  # Only load the plugins named here, in the order given (default is
alphabetical).
  # :all can be used as a placeholder for all plugins not explicitly
named
  # config.plugins =
[ :exception_notification, :ssl_requirement, :all ]

  # Skip frameworks you're not going to use. To use Rails without a
database,
  # you must remove the Active Record framework.
  # config.frameworks -=
[ :active_record, :active_resource, :action_mailer ]

  # Activate observers that should always be running
  # config.active_record.observers
= :cacher, :garbage_collector, :forum_observer

  # Set Time.zone default to the specified zone and make Active Record
auto-convert to this zone.
  # Run "rake -D time" for a list of tasks for finding time zone
names.
  config.time_zone = 'UTC'

  # The default locale is :en and all translations from config/locales/
*.rb,yml are auto loaded.
  # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.
{rb,yml}')]
  # config.i18n.default_locale = :de
end

I made sure to configure the app with the -d mysql option when
creating it.

Any help hugely appreciated.

thanks

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