我有这两个模型
User.rb
has_one :bike
Bike.rb
belongs_to :user
如果user
试图创建多个bikes
,则has_one关系没有任何意义。
如何在模型级别为此条件添加验证?
如何确保user
总是有一辆自行车?
答案 0 :(得分:1)
在 bike.rb 文件中创建一个before_create
回调。检查current_user.bike
是否有记录。如果记录存在,则添加错误并返回。
class Bike < ApplicationRecord
# Associations
has_one :user
before_create :user_exists
private
def user_exists
if self.user.bike.present?
errors[:base] << "Add your validation message here"
return false
end
end
end
答案 1 :(得分:1)
您只需在validates_uniqueness_of
模型上添加一个Bike
调用即可。
class Bike < ApplicationRecord
belongs_to :user
validates_uniqueness_of :user_id
end