我现在已经读了几个小时,试图理解正确的方法。
我有User
模型和Origin
模型。
他们之间的关系是:
class User < ActiveRecord::Base
has_one :origin, dependent: :destroy
class Origin < ActiveRecord::Base
belongs_to :user
我正在设置测试作为rails最佳实践建议,并且当我想要验证Origin与用户的关联时,我遇到了问题。我不想使用validates_associated
因为我不想在创建/操作其Origin时检查用户有效性。我所要做的就是确保Origin与现有(在DB中)用户正确关联。
我希望这些测试通过:
test "user should be present" do
assert @origin.user
end
test "user id should be present" do
assert @origin.user_id
end
test "nil user id is invalid" do
@origin.user_id = nil
assert_not @origin.valid?
end
我认为rails已经有了这个公共关系的验证器,检查用户是否存在且user_id属于该用户。
我尝试了几种组合
validates :user, presence: true
,validates :user_id, presence: true
但是没有人能给我我想要的东西。
我是否必须编写自定义验证方法来实现此目的?