2012-09-08 43 views
3

有一個配置文件配置/初始化/是inflections.rb在於,根據這個問題,可以修改某些項目的puralization: ruby on rails pluralization help?如何禁用rails中生成的模型的puralization?

不過,我不感興趣。我想關閉生成的模型名稱的自動修改。

下面是一個例子:

rails generate scaffold UserData data1:string data2:string 

數據被改變爲 '基準':

%] cat app/models/user_datum.rb 
class UserDatum < ActiveRecord::Base 
    attr_accessible :data1, :data2 
end 

這是不希望的行爲。

如何關閉它?

具體如果你可以請;我已經看到一些線索,有人說'你必須修改配方',但沒有實際的指導。 (我很欣賞人們會開始回答這個問題'你應該堅持軌道​​做事的方式,這是一個很好的理由,它會長期運行';請不要試圖解決這個問題,請不要)

+0

要清楚,「數據」是*單數rized *到「datum」以生成型號名稱 – Gareth

+0

問題是值被更改。這個問題已經更新以反映這一點。 – Doug

回答

1

這樣做的最好的辦法是:

rails generate scaffold HouseData --force-plural 

(它仍然是一個項目通過項目修復,但它並沒有涉及到多元化的東西,這是全球性的,也影響了應用程序的其他部分)

4

首先,UserDatum單數。

在任何情況下:

更改config/initializers/inflections.rb

ActiveSupport::Inflector.inflections do |inflect| 
    inflect.uncountable %w(UserData) 
end 

(無論使用哪種命名約定使用,例如,如果你使用下劃線,user_data代替,或兩者兼而有之。)

如果你想刪除全部 pluralizations(略圖:這將影響世界上的一切):

ActiveSupport::Inflector.inflections do |inflect| 
    inflect.clear 
    inflect.singular(/$/i, '') 
end 

如果你想控制模型/模型文件命名,補丁ModelGenerator

module Rails 
    module Generators 
    class ModelGenerator 
     def plural_name; singular_name; end 
     def plural_file_name; file_name; end 
    end 
    end 
end 
+0

這不適用於所有情況。示例'VAsset'仍然生成'v_assets_controller.rb' - >'class VAssetsController Doug

+0

@Doug除了你指定的那個之外,它不適用於任何*情況;我認爲這很明顯。 –

+0

不,試試吧。如果你把一個例外置於變形中。不可數%w(VAsset),它不適用於VAsset。 – Doug