【发布时间】:2012-07-04 10:36:55
【问题描述】:
我对在 Rails 3 中进行测试还是很陌生,我使用 RSpec 和 Remarkable。我已经阅读了很多帖子和一些书籍,但我仍然不确定何时使用该协会的名称,何时使用其 ID。
class Project < ActiveRecord::Base
has_many :tasks
end
class Task < ActiveRecord::Base
belongs_to :project
end
由于良好的做法,我想保护我的属性免受批量分配:
class Task < ActiveRecord::Base
attr_accessible :project # Or is it :project_id??
belongs_to :project
end
首先,我想确保一个项目永远不会在没有有效任务的情况下存在:
class Task < ActiveRecord::Base
validates :project, :presence => true # Which one is the...
validates :project_id, :presence => true # ...right way to go??
end
我还想确保分配的项目或项目 ID 始终有效:
class Task < ActiveRecord::Base
validates :project, :associated => true # Again, which one is...
validates :project_id, :associated => true # ...the right way to go?
end
...当我使用 :associated 时是否需要对 :presence 进行验证??
非常感谢您的澄清,似乎经过数小时的阅读和尝试使用 RSpec/Shoulda/Remarkable 测试东西后,由于所有的树木,我再也看不到森林了...
【问题讨论】:
-
好清晰的问题。确认一下,您不是说要“确保任务永远在没有有效(父)项目的情况下存在”吗?