2012-05-04 67 views
3

我使用activerecord连接mysql数据库并在连接后创建一个表。 到目前为止它效果很好,问题是我不知道如何检查表是否已经存在。我认为这将适用于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 
相关问题