Как я заставляю ActiveRecord показывать следующий идентификатор (в последний раз + 1) в Ruby on Rails?

Я не думаю, что ggbiplot имеет аргумент center, ни scale.. Вы путаете prcomp с ggbiplot аргументами функции?

Следующее работает просто отлично:

library(ggbiplot)
pca <- prcomp(USArrests, center = TRUE, scale. = TRUE)
ggbiplot(pca)

enter image description here

[ 1112] Проверено на ggbiplot_0.55.

42
задан Pang 16 March 2018 в 08:41
поделиться

2 ответа

Я приехал в это ТАК вопрос, потому что я хотел быть в состоянии предсказать идентификатор модели, созданной в моем наборе тестов (идентификатор тогда привык запрос REST к внешнему сервису, и я должен был предсказать точное значение для насмешки запроса).

я нашел, что Model.maximum(:id).next, хотя изящный, не работает в тестовой среде направляющих с транзакционными приспособлениями, так как обычно нет никаких записей в дб, таким образом, он просто возвратится nil.

Транзакционные приспособления делают проблему дополнительной хитрый начиная с автоматических инкрементных полевых возрастаний, даже когда нет никаких записей в дб. Кроме того, использование ALTER TABLE ***your_table_name*** AUTO_INCREMENT = 100 повреждения транзакция, Ваши тесты находятся в том, потому что это требует своей собственной транзакции.

то, Что я сделал для решения этого, должно было создать новый объект и добавить 1 к его идентификатору:

let!(:my_model_next_id) { FactoryBot.create(:my_model).id + 1 }

, Хотя несколько hacky (и немного неэффективный на Вашем дб, так как Вы создаете дополнительный объект ради его идентификатора), он ничего не делает глупо к транзакции и работает надежно в тестовой среде без записей (если Ваш тестовый прогон параллельно с доступом к тому же дб..., в этом случае: условия состязания..., возможно?).

0
ответ дан Jacob Dalton 26 November 2019 в 23:16
поделиться

Принимая ответ fig'а, я хотел бы обратить ваше внимание на одну маленькую вещь. Если вы получаете следующий ID для установки на определенную запись перед сохранением, я думаю, что это не очень хорошая идея.

потому что, например, в веб-системе

  1. вы получаете последний id как 10
  2. вы устанавливаете следующий id как 11
  3. прежде чем вы сохранили запись, кто-то другой сохранил запись, теперь теперь последний id должен быть 12, аналогично...

Я не уверен, что вы хотите, чтобы последний id делал то, о чем я думаю, но если так, то это просто чтобы привлечь ваше внимание.

31
ответ дан 26 November 2019 в 23:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: