Ruby on rails 通过对数据库的请求进行验证

Ruby on rails 通过对数据库的请求进行验证,ruby-on-rails,model-validation,Ruby On Rails,Model Validation,我有三种型号:用户、产品和贷款。贷款有一个借用日期、一个返回日期和一个当前布尔值 我想防止用户多次要求借用产品 我想防止我的贷款模型有多个当前贷款 我该怎么做 以下是我的试验,但结果并不正确: def only_one_current_贷款 错误。添加(:current,I18n.t('validation.loan.only_one_current'),除非loan.find_by(product:self.product,current:true)。计数

我有三种型号:
用户
产品
贷款
。贷款有一个
借用日期
、一个
返回日期
和一个
当前
布尔值

  • 我想防止用户多次要求借用产品
  • 我想防止我的贷款模型有多个当前贷款
我该怎么做

以下是我的试验,但结果并不正确:

def only_one_current_贷款
错误。添加(:current,I18n.t('validation.loan.only_one_current'),除非loan.find_by(product:self.product,current:true)。计数<1
结束
每次只定义一个请求
错误。添加(:product_id,I18n.t('validation.loan.only_one_request_at_a_time'))除非loan.where(product_id:self.product.id,user_id:self.user.id,借用日期:nil)。计数<1
结束

您是通过回调而不是验证来调用吗?我使用的是
仅验证当前贷款
每次仅验证一个请求
。我想您需要将它们符号化<代码>验证:只有一笔当前贷款这是我评论中的输入错误。我真的在我的模型中编写了
validate:only\u one\u current\u loan
.nil?<1
这似乎有点可疑。无将返回true或false。哪一个没有反应