Действительно ли возможно иметь составной внешний ключ в направляющих?

То есть вы хотите выровнять переключатели слева с текстом?

.form-check-label > input {
    margin-left: 0;
}

Я надеюсь, что это решит вашу проблему

5
задан pkaeding 11 November 2008 в 01:47
поделиться

2 ответа

Существует, по-видимому, проект в SourceForge для расширения ActiveRecord направляющих с помощью поддержки Составных Первичных ключей. Я не использовал это расширение, но оно могло бы помочь Вам. Это - также драгоценный камень в rubyforge.

Простой Ruby on Rails, с версии 2.0, не поддерживает составные первичные ключи (cf. HowToUseLegacySchemas). Каждая таблица должна иметь отдельный столбец, автоинкрементный названный ключ"id".

Объяснение, которое я видел: "Вы только должны соединить первичные ключи, если Вы хотите использовать унаследованную базу данных". Это - конечно, смехотворно неосведомленное представление моделирования данных.

Решение, которое я вижу, было бы:

  • Использование client_id-> Client.id
  • Использование type_id-> Usagetype.id
  • Использование resource_id-> Resource.id
  • Тарификация usage_id-> Usage.id
  • Тарификация client_id-> Client.id
  • Тарификация type_id-> Usagetype.id
  • Тарификация resource_id-> Resource.id

По-видимому избыточные внешние ключи в Billing попытка осуществить частичную ссылочную целостность. Но это не вполне добирается там - это не препятствует тому, чтобы Вы создали строки в Billing та ссылка строка в Usage с несправедливостью client/resource/usagetype комбинация, не соответствуя тем, которые в строке ссылки в таблице Billing.

править: @Yarik: да, Вы правы. Это имеет больше смысла для Usage к ссылке Billing.

  • Использование billing_id-> Billing.id

Хм. Я сделал схему ER, но я испытываю затруднения при вставке ее как изображения.

6
ответ дан 14 December 2019 в 09:04
поделиться

Вы можете создать любое ограничение, которое захотите, с помощью команды «выполнить» в миграции.

Возможно, вы захотите добавить некоторую обработку ошибок в .save, чтобы иметь дело с случаями, когда ограничение вызывает ошибку.

Вы не могут использовать встроенные генераторы методов AR для генерации использования вне биллинга, но вы все равно можете использовать метод:

class Billing
  def usages
    Usage.find(:all, :conditions => ["x = ? and y = ?", self.x, self.y])
  end
end
1
ответ дан 14 December 2019 в 09:04
поделиться
Другие вопросы по тегам:

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