2009-07-26 5 views
66

私は「服」というモデルを持っています。私はこれを一枚(一枚の服)にします。デフォルトでは、レールは複数形が織物であると言います。間違いなく、複数形が「服」であれば、より読みやすくなると思います。レールの命名規則を無効にするにはどうすればよいですか?

複数の命名規則をどのように変更するのですか?私はそれをモデルで正しく行うことができますので、何度も何度もやり直す必要はありませんか?これはどのようにルートが処理されるかを変えます(私は安らかなアーキテクチャを使用しています)。

+10

衣服や衣服にモデルを変更する方法はありますか? –

+0

関連:http://stackoverflow.com/q/6178900/1505348 – Lucio

答えて

115

私はRoRの専門家ではありませんが、possible approachが見つかりました。参照サイトから、config/initializers/inflections.rbファイル内の変曲ルールを追加することができます。

ActiveSupport::Inflector.inflections do |inflect| 
    inflect.plural /^(ox)$/i, '\1\2en' 
    inflect.singular /^(ox)en/i, '\1' 

    inflect.irregular 'octopus', 'octopi' 

    inflect.uncountable "equipment" 
end 
+45

実際には、あなたのカスタム変項はconfig/initializers/inflections.rbにあるはずです –

+3

私のような怠惰な人のために: 'ActiveSupport :: Inflector.inflections do | Inflectorがそれ自身の上にInflectorを見つけられないならば、変えてください –

+0

私はあなたのアプローチが好きです。私が多くの "カスタム"変奏曲を持っていたなら、それらをyamlに保存し、その同じアーカイブにファイルをロードします。 – Aldana

27

2+、あなたはそれを少し異なっを行う必要がありますあなたは私が最善の解決のためのRubyでは、データベースの複数形に2.2.2 WindowsまたはLinuxを

ActiveRecord::Base.pluralize_table_names = false 
5

がでこれを追加:レール2.3.2と、おそらくのために

# Add new inflection rules using the following format 
ActiveSupport::Inflector.inflections do |inflect| 
    inflect.irregular 'clothing', 'clothes' 
end 
-1

を停止しようとしている場合は、あなたのenvironment.rbファイルされました:

ActiveRecord::Base.pluralize_table_names = false 

class Persona < ActiveRecord::Base 
end 


personas = Persona.all 
personas.each do | personita | 
    print "#{personita.idpersona} #{personita.nombre}\n" 
end 

p Persona.count 
関連する問題