2012-05-04 12 views
3

私はmysqlデータベースに接続し、接続後にテーブルを作成するためにactiverecordを使用します。 これまでのところうまくいきました。問題は、テーブルがすでに存在するかどうかを確認する方法がわからないことです。私はそれがtable.existで動作すると思った?何とか私は... が...これは私がこれまでに得たものではありませんでした。mysqlテーブルが既に存在するか確認する

ActiveRecord::Base.establish_connection(
     :adapter => "mysql", 
     :host => "localhost", 
     :username => "my-username", 
     :password => "my-password", 
     :database => "my-db", 
     :encoding => "UTF8" 
    ) 

    # How to check if it exists already? table_name.table.exist? doesnt really work... 
    name = "my_table" 
if name.!table.exist? 
    ActiveRecord::Schema.define do 
     create_table :"#{name}" do |table| 
      table.column :foo, :string 
      table.column :bar, :string 
     end 
    end 
else 
puts "Table exist already..." 
end 
    # Create ActiveRecord object for the mysql table 
    class Table < ActiveRecord::Base 
     set_table_name "#{name}" 
    end 

答えて

1

あなたは、データベース接続に#TABLESメソッドを使用する必要があります。

unless ActiveRecord::Base.connection.tables.include? name 
    ActiveRecord::Schema.define do 
    create_table :"#{name}" do |table| 
     table.column :foo, :string 
     table.column :bar, :string 
    end 
    end 
end 
関連する問題