Showing posts with label activerecord. Show all posts
Showing posts with label activerecord. Show all posts

2012/01/15

Selbstverweisende Objekte - Tree Models

Mit Rails ist es relativ einfach Objekte zu erstellen, die rekursiv auf sich selbst verweisen können. Die repräsentieren meistens einen Kategoriebaum oder auch Beziehungen zwischen User (z.B. die Follower bei Twitter).

Man braucht dazu ein Model mit einem Datenbankfeld, welches sein eigenes Parent-Objekt speichert.
Mit den Methoden belongs_to und has_many lassen sich solche Beziehungen dann folgendermaßen darstellen:

  belongs_to  :parent_object,
                     :foreign_key  => "parent",
                     :class_name => "Category"
  has_many   :children,
                     :foreign_key  => "parent",
                     :class_name => "Category",
                     :order  => "name ASC",
                     :dependent => :delete_all

Nun lässt sich ganz einfach mit einer Instanz der Klasse, dessen Kinder aufrufen:

@category.children

Ebenso ist es möglich das Parent-Objekt aufzurufen:

@category.parent_object


Definiert werden diese Methoden mit dem ersten Parameter der belongs_to und has_many Definitionen. Man kann diese also nach belieben benennen.

2012/01/04

Fehler beim updaten der rails gems: coffee-rails

Wenn man versucht ein update der gems durchzuführen und dabei folgender Fehler auftritt:
Updating coffee-rails
ERROR:  While executing gem ... (NoMethodError)
    undefined method `call' for nil:NilClass
kann man ihn mit einem Update von den RubyGems wieder beheben. Auf der Umgebung lief Rails 3.1 und RubyGems 1.3.7. Nach dem Update auf RubyGems 1.8.13 lief das Update sauber durch.
# gem install rubygems-update
Falls danach beim Update Fehler - ähnlich wie diese - auftauchen sollten:
Invalid gemspec in [/usr/local/ruby/lib/ruby/gems/1.9.1/specifications/therubyracer-0.9.8.gemspec]: invalid date format in specification: "2011-10-07 00:00:00.000000000Z" Invalid gemspec in [/usr/local/ruby/lib/ruby/gems/1.9.1/specifications/json-1.6.1.gemspec]: invalid date format in specification: "2011-09-18 00:00:00.000000000Z" Invalid gemspec in [/usr/local/ruby/lib/ruby/gems/1.9.1/specifications/rack-cache-1.0.3.gemspec]: invalid date format in specification: "2011-08-27 00:00:00.000000000Z"
kann man diese folgendermaßen beheben.
  1. Die entsprechende Datei in der Fehlerausgabe in einem Editor öffnen.
  2. Die Zeile mit s.date = suchen
  3. Den Zeitwert 00:00:00.000000000Z löschen, sodass die Zeile so wie diese aussieht:  s.date = %q{2011-10-07}

2011/10/19

Von PHP zu Ruby on Rails

Über die folgenden Beiträge
Seit Wochen lese ich immer wieder von Ruby on Rails und verfolge Tweets und Blogs zu dem Thema.
Es wiederholen sich die Aussagen, dass Ruby on Rails leicht zu erlernen ist und eine schnelle Entwicklung ermöglichen soll. Das hat mich neugierig gemacht und ich wollte mir selbst ein Urteil bilden.