2010-10-04 3 views
4

Je veux créer un modèle de rails comme FileURL sans avoir à nommer le fichier file_u_r_l.rb. Comment va-t-on faire quelque chose comme ça? Je comprends que vous pouvez définir explicitement le nom de la table mais comment remplacer le nom de fichier par défaut par le nom de classe?Comment nommer un modèle quelque chose comme FileURL

Merci Prateek

Répondre

2

Vous n'avez pas besoin de faire quoi que ce soit. La méthode .underscore de Rails convertit 'FileURL' en 'file_url' et recherchera un fichier avec le même nom de base dans le chemin de chargement.

Si ActiveRecord ne devine pas le nom de la table correcte, utilisez set_table_name:

class FileURL < ActiveRecord::Base 
    set_table_name "file_urls" 
    .. 
end 
+2

Cela fonctionne pour le nom de la table, mais je ne suis pas sûr que cela fonctionne pour le nom de fichier -> classname. J'essaye de créer une classe appelée IMAPMbox mais à moins que je ne nomme le fichier i_m_a_p_mbox.rb, les rails lancent une exception "Attendu bla pour définir bla". – unamashana

+0

C'est le résultat d'un chargement paresseux. Vous pouvez toujours demander explicitement le fichier en premier pour que la constante soit déjà définie. Il semble étrange qu'il s'attendrait à i_m_a_p_mbox.rb, je ne l'ai jamais vu faire ça auparavant. –

+0

Je pense que vous avez raison. Il y avait quelque chose de drôle entre factory_girl, rails et rspec. J'ai tout trié avec un nom de fichier sain comme imap_mbox.rb mais quelque chose comme Factory.define: i_m_a_p_mbox !! – unamashana

2

Demandez-vous si cela est vraiment une exigence en premier lieu. En général, il vaut mieux aller avec les conventions Ruby (et Rails) plutôt que de les combattre. Pourquoi ne pas simplement nommer la classe de modèle FileUrl?

Questions connexes