我正在尝试测试以下场景:
-> 我有一个模型叫做Team,它只有在被用户创建后才有意义。因此,每个Team实例都必须与一个用户相关联。
为了测试这一点,我已经做了以下工作:
describe Team do
...
it "should be associated with a user" do
no_user_team = Team.new(:user => nil)
no_user_team.should_not be_valid
end
...
end
这迫使我将团队模型更改为:
class Team < ActiveRecord::Base
# Setup accessible (or protected) attributes for your model
attr_accessible :name, :user
validates_presence_of :name
validates_presence_of :user
belongs_to :user
end
你觉得这个是否正确?我只是担心使:user属性易受访问(批量赋值)。
Shoulda
将测试它,它将“确保belongs_to
关系存在”(http://rubydoc.info/github/thoughtbot/shoulda-matchers/master/Shoulda/Matchers/ActiveRecord#belong_to-instance_method)。因此,您可以安全地假设当您创建一个新的团队时,它将属于一个用户。 - Luís Ramalhovalidates :user, presence: true
来确保外键正确设置。请查看此链接:https://dev59.com/dG435IYBdhLWcg3w2z98 - Luís Ramalhoexpect(t.macro).to eq(:has_many)
是一种新的语法。 - Zoinks10