【发布时间】:2016-05-02 21:22:34
【问题描述】:
在集成测试中,我试图保存无效的link。它是无效的,因为它链接了属于两个不同组织的两个节点(我的模型验证不允许这样做)。然而,显示的错误消息不是来自我的模型验证的错误消息,而是来自控制器的错误“无法”。
我本来希望模型的验证出现在控制器中的这一行之前。此外,我不明白为什么如果我们不考虑模型验证,它就不会保存。有人能解释一下吗?
我的控制器方法的一部分:
if link.save
render json: @organization, message: "Saved", status: :created
else
render json: link, message: "Unable", status: :bad_request)
end
在Link 模型中:
validate :same_org
def same_org
org1 = self.first_node.organization unless self.first_node.nil?
org2 = self.second_node.organization unless self.second_node.nil?
unless org1 == org2
errors.add(:second_node_id, "You can't link two nodes from different organizations")
end
end
【问题讨论】:
-
请添加(在您的问题的编辑中,而不是评论中)一些有关您遇到的实际错误的更多信息。
标签: ruby-on-rails ruby validation ruby-on-rails-4 model-view-controller