2010-11-24 8 views
0

J'ai donc une base de données existante que j'essaie de manipuler via ActiveRecord. Tous les noms de colonne, table et base de données sont camel-cased, à savoir. myColumnOne, etc. Cela ne pose pas vraiment de problème, sauf que, lorsque j'essayais de définir les associations entre les tables, je n'arrive pas à accepter Rails et à laisser mon entrée pour les noms de clés étrangères seul.Nom de clé étrangère en chameau dans les rails

Par exemple: Je suis en train de définir une association entre une table appelée Cablemodems et une table appelée cmModels, où Cablemodem has_one: cmModel,: foreign_key => "cmModelId"

Rails semble vouloir dire que la clé étrangère est en fait cm_model_id. Même si je le saisis comme je l'ai montré ci-dessus.

Ma question est la suivante: Y at-il un moyen de faire en sorte que Rails accepte le boîtier? Ou dois-je faire à ce sujet sans les associations?

Merci beaucoup!

Répondre

0

Après avoir parcouru les documents de l'API Ruby on Rails pour suivre le chemin d'exécution de has_one, il est rapidement devenu évident qu'il n'existe aucun moyen simple et rapide d'empêcher le retrait automatique de camelCasing. Avec des portées nommées et une ou deux méthodes personnalisées, vous devriez être en mesure de reproduire la fonctionnalité de has_one assez facilement, donc je suggérerais de renoncer à l'association pour l'instant, et peut-être soumettre cela comme ticket sur les rails Lighthouse.

+0

Désolé de prendre autant de temps à revenir. C'est complètement précis. Je viens d'écrire quelques méthodes rapides, contournant complètement l'assistant, et cela fonctionne maintenant. Merci de votre aide –

0

Votre base de données dépend-elle vraiment de la casse? Ne serait-il travailler seulement si vous avez écrit

has_one :cm_model, :foreign_key => "cmmodelid" 

Je voudrais aussi faire écrire vos classes comme suit:

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

Est-ce que l'aide de quelque façon?