2017-03-23 14 views
1

"슬레이브"라는 스캐 폴드를 생성하려고합니다. rails generate scaffold slave 명령을 실행하면 레일이 슬레이브에서 슬래 이브로 비계의 일부를 변경합니다. 예를 들어, 영향을받는 자원 경로가 있습니다.레일즈는 스캐 폴딩시 슬레이브로 변경합니다.

왜 이런 일이 발생하며이 문제를 어떻게 해결할 수 있습니까?

RubyMine에서 JRuby와 함께 Rails 5.0.2를 사용하고 있습니다. 이미 @omnikron 말했다

+0

AFAIK 이것은 기본 동작이 아닙니다. 어쩌면 복수화 규칙이 변경되었을 수도 있습니다. 'config/initializers/inflections.rb'의 내용은 무엇입니까? – omnikron

+0

굴절은 비어 있습니다 (기본 설명 제외). –

+0

악의적 인 hipster가 정치적으로 올바른 inflections.rb 파일을 추가하여 "노예"가 "슬라브"가되고 "사용자"가 "존재"가되는 결과가 될 수 있습니다. – bkunzi01

답변

1

. 레일 변곡점은 대부분의 경우에 적용되는 하나의 크기에 맞는 접근 방식을 취하지 만, 이상한 영어 복수형이 있기 때문에 종종 당신을 붙잡을 수 있습니다. 귀하의 경우에는 복수의 '노예'가 입력 '슬레이브'에서 올바르게 생성되지만 경로 도우미 생성 레일에서는 this inflection rule 때문에 '슬레이브'의 유일한 버전이 분명히 필요합니다.

...

# config/initializers/inflections.rb 
ActiveSupport::Inflector.inflections do |inflect| 
    inflect.singular('slaves', 'slave') 
end 

다시 발전기를 실행하고 작동 :

이 단순히 자신의 규칙을 추가 수정하려면 덧붙여

$ rake routes | grep slave 
         slaves GET  /slaves(.:format)             slaves#index 
           POST  /slaves(.:format)             slaves#create 
        new_slave GET  /slaves/new(.:format)            slaves#new 
        edit_slave GET  /slaves/:id/edit(.:format)           slaves#edit 
         slave GET  /slaves/:id(.:format)            slaves#show 
           PATCH /slaves/:id(.:format)            slaves#update 
           PUT  /slaves/:id(.:format)            slaves#update 
           DELETE /slaves/:id(.:format)            slaves#destroy 

, 전자 XACT 반대 문제는 this rule 발생할 수 있습니다 예컨대 rails generate scaffold cafe에 문제가 발생

inflect.plural(/(?:([^f])fe|([lr])f)$/i, '\1\2ves') 

... - '카페'해야 모든 것이 '동굴'이된다. 아!

0

으로, 당신은 파일 config/initializers/inflections.rb에서 "불규칙한"활용을 강제로 시도 할 수 있습니다 :이 때문에 잘못된 굴절의 일이 일어나고

ActiveSupport::Inflector.inflections(:en) do |inflect| 
    inflect.irregular 'slave', 'slaves' 
end