Название внешнего ключа в верблюдах в Rails - PullRequest
0 голосов
/ 24 ноября 2010

Итак, у меня есть существующая база данных, которой я пытаюсь манипулировать через ActiveRecord.Все имена столбцов, таблиц и баз данных имеют верблюжий корпус, т.е.myColumnOne и т. д. Это на самом деле не представляет проблемы, за исключением того, что, когда я пытался определить ассоциации между таблицами, я не могу заставить Rails принять и оставить свой ввод только для имен внешних ключей.

Например: я пытаюсь определить связь между таблицей с именем cableModems и таблицей с именем cmModels, где cableModem has_one: cmModel,: foreign_key => "cmModelId"

Кажется, что Railsхочу сказать, что иностранный ключ на самом деле является cm_model_id.Даже если я введу это так, как я показал выше.

У меня такой вопрос: есть ли способ заставить Rails принять корпус?Или мне нужно обойтись без ассоциаций?

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 24 ноября 2010

Действительно ли ваша база данных зависит от регистра? Разве это не сработало бы, если бы вы написали

has_one :cm_model, :foreign_key => "cmmodelid"

Я бы также написал ваши классы следующим образом:

class CableModem < ActiveRecord::Base
  set_table_name "cableModems" 
  set_primary_key "cableModemId" 
end

Помогает ли это в любом случае?

0 голосов
/ 24 ноября 2010

После просмотра документации по API Ruby on Rails для отслеживания пути выполнения для has_one быстро стало ясно, что не существует быстрого и простого способа предотвратить автоматическую де-CamelCasing.С именованными областями действия и одним или двумя пользовательскими методами вы сможете довольно легко воспроизвести функциональность has_one, поэтому я бы посоветовал отказаться от ассоциации на данный момент и, возможно, представить ее в качестве билета на Rails Lighthouse .

...