Rails 2.0.2 Migration / Migrator issue

Windows XP, Rails 2.0.2, Ruby 1.8.5, sqlite3-ruby (1.2.1), SQLite
version 3.3.8

I am hitting the following issue when using the
ActiveRecord::Base.table_name_prefix
This a basic out the box issue
At a command prompt

rails foo
cd foo
ruby script\generate model foo name:string --force

In an editor add the following to the environment.rb file

Rails::Initializer.run do |config|

Lots of stuff

config.active_record.default_timezone = :utc

THIS HERE !!

config.active_record.table_name_prefix= ‘boo_’
end

(Save …)

At the prompt again

rake db:migrate -t
rake db:test:clone -t
sqlite3 db\test.sqlite3
SQLite version 3.3.8
Enter “.help” for instructions
sqlite> .tables
boo_boo_foos boo_boo_schema_info

The table names are hosed … !

Please can anyone help by confirming this problem exists outwith my
environment ?

The problem is in the active_record/migration file #proper_table_name
method which assumes that the table argument is not proper …

The following fixes the problem
Create a file config\initializers\migration.rb

Copy the following to it

require ‘active_record/migration’

module ActiveRecord

class Migrator#:nodoc:

class << self

  # overide to check for table name propriety
  def proper_table_name( name )
    name.table_name rescue make_proper_table_name( name )
  end

  def make_proper_table_name( name )
    is_proper_table_name?( name ) ? name :

“#{ActiveRecord::Base.table_name_prefix}#{name}#{ActiveRecord::Base.table_name_suffix}”
end

  def is_proper_table_name?( name )
    name_string = name.to_s

    (not name_string.empty?) and
      name_string.starts_with?

( “#{ActiveRecord::Base.table_name_prefix}” ) and
name_string.ends_with?
( “#{ActiveRecord::Base.table_name_suffix}” )
end

end

end
end

(Save …)

Delete the db*.sqlite3 and db\schema.rb files
Then

rake db:migrate
rake db:test:clone
sqlite3 db\test.sqlite3
SQLite version 3.3.8
Enter “.help” for instructions
sqlite> .tables
boo_foos boo_schema_info

The tables are as expected.

Can anyone confirm this before I take it further.

Thanks for all and any help!

Cheers!
sinclair

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs