2010-10-04 40 views
4

我想創建一個像FileURL這樣的rails模型,而不必命名文件file_u_r_l.rb。人們如何去做這樣的事情?我知道你可以明確地設置表名,但是如何覆蓋缺省文件名到類名映射?如何命名一個類似FileURL的模型

感謝 Prateek

回答

2

你不需要做任何事情。 Rails的.underscore方法將'FileURL'翻譯爲'file_url',並將在加載路徑中查找具有相同基本名稱的文件。

如果ActiveRecord的不猜測正確的表名,使用set_table_name:

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

這適用於設置表名,但我不確定這是否適用於filename - > classname。我正在嘗試創建一個名爲IMAPMbox的類,但除非將該文件命名爲i_m_a_p_mbox.rb,否則rails會引發「期望的等待來定義等待」異常。 – unamashana 2010-10-05 05:26:38

+0

這是延遲加載的結果。你總是可以明確地要求文件,這樣常量就已經定義好了。似乎奇怪,它會期待i_m_a_p_mbox.rb,我從來沒有見過它做過。 – 2010-10-09 17:19:20

+0

我認爲你是對的。 factory_girl,rails和rspec之間有一些有趣的事情發生。我已經用imap_mbox.rb這樣一個合理的文件名進行整理,但像Factory.define一樣:i_m_a_p_mbox! – unamashana 2010-10-12 04:19:52

2

問問你自己是否真的是擺在首位的要求。一般來說,您最好使用Ruby(和Rails)約定而不是與之對抗。爲什麼不只是命名模型類FileUrl?