Die Pluralisierungsmuster von Rails verstehen
Ihnen ist aufgefallen, dass Rails stark auf Konventionen setzt. Insbesondere nutzt es häufig die Pluralisierung, um den Namen einer Datenbank-Klasse an die dazugehörigen Modell- und Controller-Klassen zu binden. Sie wollen verstehen, wo die Pluralisierung verwendet wird und wo nicht.
Lösung
class Chapter < ActiveRecord::Base has_many :recipes end
Dieser Code sagt: »Ein Kapitel (Chapter) hat viele Rezepte (recipes)«. Sie können sehen, dass das die tieferliegende Beziehung zwischen Kapiteln und Rezepten beschreibt. Und es ist auch für Nicht-Programmierer und Kunden verständlich.
$ ruby script/generate scaffold -p recipe exists app/controllers/ exists app/helpers/ create app/views/recipes exists test/functional/ dependency model exists app/models/ exists test/unit/ exists test/fixtures/ create app/models/recipe.rb create test/unit/recipe_test.rb create test/fixtures/recipes.yml create app/views/recipes/_form.rhtml create app/views/recipes/list.rhtml create app/views/recipes/show.rhtml create app/views/recipes/new.rhtml create app/views/recipes/edit.rhtml create app/controllers/recipes_controller.rb create test/functional/recipes_controller_test.rb create app/helpers/recipes_helper.rb create app/views/layouts/recipes.rhtml create public/stylesheets/scaffold.cs
Diskussion
ActiveRecord::Base.pluralize_table_names = false
$ ruby script/console Loading development environment. >> "account".pluralize => "accounts" >> "people".pluralize => "peoples"
Inflector.inflections do |inflect| inflect.plural(/$/, 's') inflect.plural(/s$/i, 's') inflect.plural(/(ax|test)is$/i, '\1es') ... inflect.singular(/s$/i, '') inflect.singular(/(n)ews$/i, '\1ews') inflect.singular(/([ti])a$/i, '\1um') ... inflect.irregular('person', 'people') inflect.irregular('man', 'men') inflect.irregular('child', 'children') ... inflect.uncountable(%w(equipment information rice money species series fish sheep)) end
$ ruby script/console >> "foo".pluralize => "foos"
... Inflector.inflections do |inflect| inflect.uncountable "foo" end
$ ruby script/console >> "foo".pluralize => "foo"
Inflector.inflections do |inflect| inflect.plural /^(ox)$/i, '\1\2en' inflect.singular /^(ox)en/i, '\1' inflect.irregular 'octopus', 'octopi' inflect.uncountable "equipment" end
Dieses Rezept stammt aus dem Rails Kochbuch, veröffentlicht beim O’Reilly Verlag
Eingestellt am 27.05.2008 um 06:08
Kategorie: Tutorials
Suchen auf rubyonrails.de
Tags
2.0 Action Active-Record ActiveRecord Ajax Buch Capistrano Enterprise Event Formulare Gewinnspiel Grundlagen IDE irb jQuery Kochbuch Konferenz Mac OpenRoRBook OReilly OSX Passenger Phusion Plugin PragProgs Rails Rails 3 RailsWayCon Release Release Candidate Routing Ruby Ruby 1.9 RubyGems rubyonrails.de Ryan Bates Scaffolding Screencast Script-Tip Security Tutorial Upgrade Video Views WindowsAktuelle Artikel
- Rails 3 Release Kandidat veröffentlicht
- Screencast: Controller in Rails 3
- Screencast: Diagramme in Rails Applikationen verwenden
- Screencast: Rails 3 mit Rack
- Screencast: Subdomains in Rails 3
- Rails Magazine 6
- Screencast: PDF Dokumente mit PDFKit generieren
- Screencast: Rails 3 Active Model
- Screencast: Eigene Rails 3 Generatoren erstellen
- Rails 3 Screencastserie von Gregg Pollack (EnvyLabs)
Artikel Archiv
- July 2010
- June 2010
- May 2010
- April 2010
- March 2010
- February 2010
- January 2010
- December 2009
- November 2009
- October 2009
- September 2009
- August 2009
- July 2009
- May 2009
- April 2009
- March 2009
- February 2009
- December 2008
- November 2008
- August 2008
- July 2008
- June 2008
- May 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
Aktuelle Rails Version + Abhängigkeiten:
rails-2.3.5actionmailer (= 2.3.5, runtime)
actionpack (= 2.3.5, runtime)
activerecord (= 2.3.5, runtime)
activeresource (= 2.3.5, runtime)
activesupport (= 2.3.5, runtime)
rake (>= 0.8.3, runtime)
Rails auf Rubyforge
Rails auf Github