2014-09-19 73 views
0

我正在嘗試將腳手架生成器用於名爲'RSVP'的模型和控制器。我希望定義變形足以使它創建一個帶有RSVPController類的rsvps_controller.rb和帶有RSVPs表的RSVP模型。我也會發現RsvpController和Rsvp可以接受。Rails首字母縮略詞轉折分裂中短名稱

不幸的是,它似乎已將'RSVP'拆分爲'RSV P',因此rails generate scaffold RSVP ...已創建了一組不同的拼寫,包括rsv_ps_controller,RsvPsController和rSVPs。唯一可以接受的結果就是名爲rsvp.rb的模型文件,裏面有一個Rsvp類。

有沒有一種合適的方法來達到預期的效果?我使用Rails 4.1.4

我的配置/初始化/是inflections.rb樣子:

ActiveSupport::Inflector.inflections(:en) do |inflect| 
    inflect.acronym 'RSVP' 
    inflect.irregular 'RSVP', 'RSVPs' 
end 

我與那些的所有組合嘗試了兩種(即兩個單獨和共同定義)。兩者似乎都得到了相同的結果。

> bundle exec rails generate scaffold RSVP account:references ... 
     invoke active_record 
     create db/migrate/20140918213359_create_rSVPs.rb 
     create app/models/rsvp.rb 
     invoke test_unit 
     create  test/models/rsvp_test.rb 
     create  test/fixtures/rSVPs.yml 
     invoke resource_route 
     route resources :rSVPs 
     invoke scaffold_controller 
     create app/controllers/rsv_ps_controller.rb 
     invoke erb 
     create  app/views/rsv_ps 
     create  app/views/rsv_ps/index.html.erb 
     create  app/views/rsv_ps/edit.html.erb 
     create  app/views/rsv_ps/show.html.erb 
     create  app/views/rsv_ps/new.html.erb 
     create  app/views/rsv_ps/_form.html.erb 
     invoke test_unit 
     create  test/controllers/rsv_ps_controller_test.rb 
     invoke helper 
     create  app/helpers/rsv_ps_helper.rb 
     invoke  test_unit 
     create  test/helpers/rsv_ps_helper_test.rb 
     invoke jbuilder 
     create  app/views/rsv_ps/index.json.jbuilder 
     create  app/views/rsv_ps/show.json.jbuilder 
     invoke assets 
     invoke coffee 
     create  app/assets/javascripts/rsv_ps.js.coffee 
     invoke scss 
     create  app/assets/stylesheets/rsv_ps.css.scss 
     invoke scss 
     create app/assets/stylesheets/scaffolds.css.scss 
+0

你可以把它叫做'Response',而不是'RSVP' ... – nort 2014-09-19 18:46:08

+0

我考慮,但我認爲它應該有可能有一個首字母縮寫詞這樣作爲模型名稱。 – dsample 2014-09-19 19:10:28

回答

0

ActiveSupport::Inflector::Inflections.acronym方法的文檔表明您應該增加對單數和複數形式的形式的縮寫條目。

這意味着以下應該工作。但是,這對我仍然不起作用。

ActiveSupport::Inflector.inflections(:en) do |inflect| 
    inflect.acronym 'RSVP' 
    inflect.acronym 'RSVPs' 
end 

從DOC:

# Note: Acronyms that are passed to +pluralize+ will no longer be 
    # recognized, since the acronym will not occur as a delimited unit in the 
    # pluralized result. To work around this, you must specify the pluralized 
    # form as an acronym as well: 
    # 
    # acronym 'API' 
    # camelize(pluralize('api')) # => 'Apis' 
    # 
    # acronym 'APIs' 
    # camelize(pluralize('api')) # => 'APIs' 
相關問題