我在模型中创建了唯一性验证,以确保表中的user_id是唯一的,但我不确定关联是否有__那样做。
用户模型
class User < ActiveRecord::Base
#association macros
has_one :balance
end
余额模型
class Balance < ActiveRecord::Base
#association macros
belongs_to :user
#validation macros
validates :user_id, presence: true, uniqueness: true #uniqueness is necessary?
end
答案 0 :(得分:2)
没有必要为此validates_presence_of
,因为它是在您的数据库中处理的。但是,为了不必处理数据库错误,最好在您的模型中执行此操作。然后,在错误处理程序中构建用于验证的Rails将起作用。
如果您的表数据显示它不能为null / nil,则验证在数据库本身上,并将返回一个更难处理的错误。您将收到系统错误和Rails更好的错误&#39;信息。这基本上打破了你的应用程序。
如果您使用...
在模型中进行模型验证validates :user_id, presence: true, uniqueness: true
然后Rails将允许您在应用程序中控制这些错误消息。您可以选择忽略它们(错误)并使数据输入几乎无声地失败。或者,您可以在控制器中打开label_errors和flash消息,以允许用户查看他们尝试在表单上输入的数据有什么问题。