Как обрабатывать записи, которым может понадобиться один и тот же идентификатор - PullRequest
1 голос
/ 04 ноября 2019

У меня есть следующие модели:

class Site
  has_many :posts
end

class Post
  belongs_to :site
end

И пост имеет следующие столбцы:

id
site_id
url
title
body

Это будет хранить WordPress сообщения, и я хочу использовать post_id сообщений WordPress, и из-за этого у меня может быть два сайта, на которых будет, например, сообщение 1. Поэтому мне нужен способ дублировать идентификаторы записей, но указывать на разные записи.

Спасибо.

1 Ответ

1 голос
/ 04 ноября 2019

Независимо от этого варианта использования, это плохая практика, когда ваша ActiveRecord id полагается на другой источник данных.

В вашем случае игнорируйте обычный id и сохраняйте идентификатор сообщения WordPress вновый столбец, назовем его wp_id, который не является уникальным для всей таблицы.

Затем вы можете создать следующий индекс, чтобы ускорить запросы и обеспечить уникальность идентификатора поста для сайта:

add_index :posts, [:site_id, :wp_id], unique: true

Таким образом, вы получаете то, что называется составной ключ , что означает, что каждая комбинация site_id и wp_id уникальна в таблице posts.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...