zyr*_*use 0 ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2
HY
很多时候我运行rake db:migrate我得到一个错误,因为表用户或foor或bar存在.我试图检查表的存在,但这不起作用,我不知道为什么.我使用rails 3.2.2
class AddDeviseToUsers < ActiveRecord::Migration
#def self.table_exists?(users)
# ActiveRecord::Base.connection.tables.include?(users)
#end
if !table_exists?("users")
def change
create_table(:users) do |t|
## Database authenticatable
t.string :email, :null => false, :default => ""
t.string :encrypted_password, :null => false, :default => ""
end
end
end
Run Code Online (Sandbox Code Playgroud)
小智 8
您可以使用以下命令检查表的存在.这个问题已在此处发布并回答.
ActiveRecord::Base.connection.table_exists? 'users'
Run Code Online (Sandbox Code Playgroud)
但是,您的代码包含错误.您无法if使用您正在使用的语法在块内定义方法.将块放在方法中,而不是.
def change
if !table_exists?("users")
# ...
end
end
Run Code Online (Sandbox Code Playgroud)
此外,正如您所说,您不应经常遇到此类错误.迁移按顺序应用.users在向其添加Devise之前,在单独的迁移中创建表将解决该问题.如果从头开始迁移现有项目时遇到此问题,请考虑使用rake db:schema:load.
| 归档时间: |
|
| 查看次数: |
4910 次 |
| 最近记录: |