嗨我在我的rails应用程序中有一个种子文件,我在其中销毁所有旧对象以启动,然后创建各种各样的新对象.我希望创建新对象的id为1,因为所有旧对象都被销毁,但是使用高于旧对象的所有id的id创建新对象.因此,举个例子,我有50个Post对象,id为1-50.我运行Post.destroy_all并创建了50个Post对象.所有旧的Post对象都被销毁,但新的Post对象都具有51-100的id.Post.find(1)不存在.
这是我的种子文件:
Photo.destroy_all
Post.destroy_all
Like.destroy_all
50.times do
Photo.create(name: Faker::Name.name)
end
50.times do
Post.create(body: Faker::Lorem.paragraph)
end
def get_parent
resource = [Post, Photo].sample
parent = resource.all.sample
parent
end
150.times do
parent = get_parent
Like.create(likeable_type: parent.class.name, likeable_id: parent.id)
end
Run Code Online (Sandbox Code Playgroud)
如果我多次运行rake db:seed,每次运行时每个对象集合的ID会高出50.所以当id为101 - 150并运行rake db:seed时,id现在为151-200,没有任何对象存在且id小于151.
如何在销毁所有记录后创建具有从1开始的ID的对象,以及为什么我得到此当前行为?
谢谢您的帮助.
你应该在destroy命令行之后在种子文件中写这个:
ActiveRecord::Base.connection.reset_pk_sequence!('photos')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
324 次 |
| 最近记录: |