要截断一个ActiveRecord表,我可以做如何在轨中截断连接表?
Category.destroy_all
或
Post.destroy_all
一个人如何去截断categories_post
表?
要截断一个ActiveRecord表,我可以做如何在轨中截断连接表?
Category.destroy_all
或
Post.destroy_all
一个人如何去截断categories_post
表?
对于真实的TRUNCATE
,可以使用execute
来运行原始SQL。
ActiveRecord::Base.connection.execute("TRUNCATE TABLE #{table_name}")
您使用模型的示例没有执行真正的TRUNCATE
查询。
destroy_all
不是TRUNCATE
的表格。它“通过实例化每条记录并调用其销毁方法来破坏匹配条件的记录”(link)。delete_all
更接近 - 它忽略回调 - 但仍然不是TRUNCATE
。使用execute
方法删除数据库中的行而不创建任何模型实例。
而且,实际TRUNCATE
查询,至少在MySQL,将重新设置主键自动递增,让你插入的下一个记录将有1
我想你的连接表叫做categories_posts。 CategoryPost.destroy_all应该工作,如果没有,也许你需要在模型中指定表名(CategoryPost)
set_table_name "categories_posts"
更新,还没有一个CategoryPost模型,所以应该创建:
class CategoryPost < ActiveRecord::Base
set_table_name "categories_posts"
end
ID连接的表没有一个关联模型。例如'CategoryPost' – 2010-09-09 09:59:30
您可以创建它 – jordinl 2010-09-09 10:11:09