Ruby on Rails:我可以使用ID以外的属性/列删除记录吗?

时间:2019-04-21 00:30:50

标签: ruby-on-rails heroku-cli

我需要在Heroku Rails控制台中删除几篇博客文章,而我对此没有足够的经验。

我可以在url中看到博客文章,我可以利用它的文章删除博客文章吗?如果可以,怎么办?

这是这些博客的架构:

 create_table "blogs", force: :cascade do |t|
    t.string "title"
    t.text "body"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.string "slug"
    t.integer "status", default: 0
    t.bigint "topic_id"
    t.index ["slug"], name: "index_blogs_on_slug", unique: true
    t.index ["topic_id"], name: "index_blogs_on_topic_id"
  end

我还知道那些特定博客所属的topic_id,这会有助于我识别和删除那些博客文章吗?

通过执行步骤1:Topic.find(18),步骤2:topic = Topic.find(18)和步骤3:topic.blogs.first,我能够确定主题中的博客。有什么办法可以删除第一个主题?

1 个答案:

答案 0 :(得分:0)

您可以同时使用这两个博客来引用这些博客:

使用子弹

list = ['slug1', 'slug2',..]
blogs = Blog.where(slug: list)
blogs.destroy_all

使用topic_id

list = ['topic1', 'topic2',..]
blogs = Blog.where(topic_id: list)
blogs.destroy_all

警告

  • 通过slug进行博客是一种比topic_id更好的方法,因为主题可能包含更多您不希望删除的博客。

  • 无论如何,在删除之前,请先检查博客,因为这是不可逆的。