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
- Scripttip: Mehr Informationen im Bash-Prompt
- Scripttip: Herausfinden ob ein Datum in einen bestimmen Zeitraum fällt
- Scripttip: Herausfinden ob ein Wert numerisch ist
- Screencast: Resourcen vererben
- Ruby on Rails 2.3.9 veröffentlicht
- Alle Links zu Rails 3
- Rails 3 Upgrade Handbook PDF
- Ruby on Rails 3: Moderne Webentwicklung mit Ruby
- Rails 3.0 ist fertig
- Screencast: Polling nach Aktualisierungen
Artikel Archiv
- September 2010
- August 2010
- 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:
Gem rails-3.0.0actionmailer (= 3.0.0, runtime)
actionpack (= 3.0.0, runtime)
activerecord (= 3.0.0, runtime)
activeresource (= 3.0.0, runtime)
activesupport (= 3.0.0, runtime)
bundler (~> 1.0.0, runtime)
railties (= 3.0.0, runtime)
Rails auf Rubyforge
Rails auf Github