我有以下ActiveRecord调用:
@payment = account.business.payments.find(params[:id])
其中通过关联搜索id为params [:id]的付款.但是,这会抛出RecordNotFound异常.
我想打电话给存在吗?而是查看记录是否存在以避免抛出异常.执行Payment.exists?(account.business.payments.find(params [:id]))不起作用.
我只想搜索属于该商家的付款,而不是通过Payment.exists搜索所有付款?(:id => params [:id]).这样我就知道这是特定账户的业务付款.
我怎样才能做到这一点?
注意:
帐户has_one业务和业务has_many付款.
解决方法
使用where而不是find,它将返回一个表示0或更多记录的ActiveRecord :: Relation,你可以将其链接到.exists?:
@payments = account.business.payments.where(id: params[:id]) if @payments.exists? # ... end