Ruby on Rails: могу ли я удалять записи, используя атрибуты / столбцы, отличные от ID?

#ruby-on-rails #heroku-cli

#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:

Вы можете использовать оба для ссылки на эти блоги:

Использование 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 потому, что в темах может быть больше блогов, которые вы, возможно, не захотите удалять.

  • В любом случае просмотрите блоги перед удалением, поскольку это необратимо.

Комментарии:

1. Я смог идентифицировать блоги в теме, выполнив шаг 1: Topic.find(18), Шаг 2: topic = Topic.find(18) и шаг 3: topic.blogs.first, а затем я смог удалить с помощью slug. Спасибо.