имя столбца миграции rails с суффиксом _id

Хотите выполнить миграцию рельсов, но я хочу, чтобы имя столбца было чем-то вроде external_id, но я не хочу использовать какую-либо модель с внешним . я думаю, что рельсы по умолчанию, всякий раз, когда видит _id как суффикс, он ищет ассоциацию внешнего ключа, и если он не существует, миграция отменяется. какое решение для этого. у меня есть

def self.up
    create_table :external_mappings do |t|
      t.string :external_name
      t.integer :external_id

      t.timestamps
    end
  end

Спасибо за вашу помощь


когда я делаю это, миграция t.integer: externalId работает. это заставляет меня думать, что external_id ищет ссылку на внешний ключ, есть ли способ, которым мы можем подавить ссылку на внешний ключ. Я использую рельсы 2.3.5


person Anand Kumar    schedule 12.03.2013    source источник


Ответы (3)


Вы можете дать любому столбцу имя _id и ссылки на внешние ключи без _id, так что не стесняйтесь продолжать. Это просто соглашение, на которое Rails опирается при выборе model-name_id, но без проблем его можно определить по-другому.

person Zippie    schedule 12.03.2013

Нет, rails не отменяет миграцию из-за несуществующей модели.

person Ramiz Raja    schedule 12.03.2013
comment
когда я делаю t.integer :external_id - person Anand Kumar; 12.03.2013

Интересно, создал ли оригинальный плакат новую модель, используя строительные леса и тип «ссылки». Если это так, миграция потерпит неудачу во время попытки создания внешнего ключа.

В противном случае, если это просто целое число, нет ничего плохого в добавлении _id в конец имени столбца, приемлемого в других отношениях.

person user632657    schedule 12.03.2013