Die perfekte Möglichkeit, um Rails 3-Assoziationen zu validieren und zu testen (mit RSpec / Remarkable)?

Ich bin noch ziemlich neu testen in Rails 3, und ich verwende RSpec und Bemerkenswert. Ich Las viele Beiträge und einige Bücher schon, aber ich bin immer noch eine Art stecken in der Unsicherheit, Wann der Verein seinen Namen, als Sie seine ID.

class Project < ActiveRecord::Base
  has_many :tasks
end

class Task < ActiveRecord::Base
  belongs_to :project
end

Wegen der guten Praxis möchte ich zum Schutz meiner Attribute aus der Masse Aufgaben:

class Task < ActiveRecord::Base
  attr_accessible :project  # Or is it :project_id??

  belongs_to :project
end

Erste von allen, ich will, um sicherzustellen, dass ein Projekt nie existiert, ohne eine gültige Aufgabe:

class Task < ActiveRecord::Base
  validates :project, :presence => true      # Which one is the...
  validates :project_id, :presence => true   # ...right way to go??
end

Ich möchte auch, um sicherzustellen, dass die zugewiesene Projekt oder die Projekt-ID ist immer gültig:

class Task < ActiveRecord::Base
  validates :project, :associated => true     # Again, which one is...
  validates :project_id, :associated => true  # ...the right way to go?
end

...und muss ich die Validierung auf :Vorhandensein, wenn ich Sie benutze :Zusammenhang??

Vielen Dank für die Klarstellung, es scheint, dass nach Stunden Lesen und probieren und testen Sachen mit RSpec/Shoulda/Bemerkenswerte, das ich nicht sehen den Wald wegen der Bäume nicht mehr...

Kommentar zu dem Problem
Schöne klare Frage. Um zu bestätigen, nicht Sie meinen, Sie wollen "sicherstellen, dass eine Aufgabe, die nie existiert, ohne eine gültige (Eltern) Projekt"? Kommentarautor: Mark Berry

InformationsquelleAutor der Frage Joshua Muheim | 2012-07-04

Schreibe einen Kommentar