La meilleure façon de valider et de tester les Rails de 3 associations (à l'aide de RSpec/Remarquable)?

Je suis encore assez nouveau pour les tests dans Rails 3, et je l'utilise RSpec et Remarquable. J'ai lu beaucoup de posts et quelques livres déjà, mais je suis toujours coincé dans l'incertitude quand à utiliser le nom de l'association, lors de son ID.

class Project < ActiveRecord::Base
  has_many :tasks
end

class Task < ActiveRecord::Base
  belongs_to :project
end

À cause de la bonne pratique, je veux protéger mes attributs à partir de la masse de travaux:

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

  belongs_to :project
end

Tout d'abord, je veux faire en sorte qu'un projet jamais existe sans une tâche valide:

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

Je veux aussi assurez-vous que le projet ou l'ID de projet est toujours valable:

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

...et de faire j'ai besoin de la validation :présence lorsque j'utilise :associé??

Merci beaucoup pour clarifier, il semble que, après des heures de lecture et d'essayer de tester des trucs à l'aide de RSpec/Shoulda/Remarquable, je ne vois pas la forêt en raison de tous les arbres de plus...

  • Belle question claire. Pour confirmer, n'avez-vous pas dire que vous voulez ", assurez-vous qu'un groupe de jamais il existe sans un valide (parent) de projet"?