Ruby on Rails:我可以使用 ID 以外的 attributes/columns 删除记录吗?
Ruby on Rails: Can I delete records using attributes/columns other than ID?
我需要在 Heroku rails 控制台中删除几个博客 post,但我没有足够的经验去做这件事。
我可以在 url 中看到博客 post slug,我可以使用它的 slug 删除博客 posts 吗?如果是,怎么做?
这些博客的架构如下所示:
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
,这会帮助我识别和删除那些博客 post 吗?
通过第 1 步:Topic.find(18)
、第 2 步:topic = Topic.find(18)
和第 3 步:topic.blogs.first
,我能够识别主题中的博客。有什么方法可以删除第一个主题吗?
您可以同时使用两者来指代那些博客:
使用 slug:
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
更好,因为主题可能有更多您可能不想删除的博客。
在任何情况下,删除前请先查看博客,因为它是不可逆的。
我需要在 Heroku rails 控制台中删除几个博客 post,但我没有足够的经验去做这件事。
我可以在 url 中看到博客 post slug,我可以使用它的 slug 删除博客 posts 吗?如果是,怎么做?
这些博客的架构如下所示:
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
,这会帮助我识别和删除那些博客 post 吗?
通过第 1 步:Topic.find(18)
、第 2 步:topic = Topic.find(18)
和第 3 步:topic.blogs.first
,我能够识别主题中的博客。有什么方法可以删除第一个主题吗?
您可以同时使用两者来指代那些博客:
使用 slug:
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
更好,因为主题可能有更多您可能不想删除的博客。在任何情况下,删除前请先查看博客,因为它是不可逆的。