Помните, что вы можете зарегистрировать несколько обработчиков событий для одного и того же события в jQuery. Таким образом, если ваш обработчик зарегистрирован дважды, ваш обработчик будет запускаться при событии одного клика. Вы можете удалить слушателя, используя метод off
$("body").off("click");
Но я бы предложил зарегистрировать обработчик непосредственно на вашем элементе:
$("#seeds").on("click", function(){
alert('click fired');
});
rake db:reset
Он воссоздает вашу таблицу из миграций.
Как предлагается в комментариях, более быстрый способ сделать это (но вам нужно добавить новую задачу с граблями):
namespace :db do
desc "Truncate all tables"
task :truncate => :environment do
conn = ActiveRecord::Base.connection
tables = conn.execute("show tables").map { |r| r[0] }
tables.delete "schema_migrations"
tables.each { |t| conn.execute("TRUNCATE #{t}") }
end
end
Ответ скопирован from: ответ на SO .
В направляющих 6, можно сделать rails db:truncate_all
для удаления всех данных, не отбрасывая таблиц.
, Если требуется отобрать дб после этого, Вы могли бы также сделать rails db:seed:replant
для усечения всех данных и базы данных семени
Если вы пытаетесь сделать это из кода, а не из командной строки, скажем, с помощью метода Test :: Unit :: TestCase # teardown
, вы можете сделать либо
class MyTest < Test::Unit::TestCase
def teardown
ActiveRecord::Base.subclasses.each(&:delete_all)
end
end
или
class MyTest < Test::Unit::TestCase
def teardown
Rake::Task['db:reset'].invoke
end
end
Я предупреждаю вас: ни один из них не особенно быстр. Вам определенно будет лучше с транзакционными тестами, если сможете.
Вы можете получить более точное управление с помощью:
rake db:drop:all
Затем создайте базу данных, не выполняя миграции,
rake db:create:all
Затем выполните все миграции,
rake db:migrate
Вы также можете:
mysqladmin drop databasename
Если вы просто хотите начать с чистого листа со свежим набором пустых таблиц, вы можете сначала убедиться, что у вас есть актуальное определение схемы в db/schema.rb:
rake db:schema:dump
и затем:
rake db:schema:load
что дает эффект удаления таблиц и их повторного создания, без выполнения всей вашей батареи миграций.
Я знаю, что это старый вопрос, но я подумал, что это может быть кому-то полезно. Это очень быстрый способ очистки всех данных из базы данных.
tables = []
ActiveRecord::Base.connection.execute("show tables").each { |r| tables << r[0] }
tables = tables - ["schema_migrations"]
tables.each do |table|
ActiveRecord::Base.connection.execute("DELETE FROM #{table} WHERE 1 = 1")
end
Я использую эту технику в некоторых спецификациях в блоке after (: all)
. Это намного быстрее и эффективнее, чем любая из задач Rails по очистке, миграции и сбросу базы данных.
Кстати: я почти уверен, что это, скорее всего, не удастся, если бы вы применяли ограничения внешнего ключа на стороне базы данных.