ActiveRecord存在吗?与协会

dar*_*sky 7 ruby activerecord ruby-on-rails

我有以下ActiveRecord调用:

@payment = account.business.payments.find(params[:id])
Run Code Online (Sandbox Code Playgroud)

其中通过关联搜索paymentid为params[:id].但是,这会抛出RecordNotFound异常.

我想打电话exists?来查看记录是否存在以避免抛出异常.做Payment.exists?(account.business.payments.find(params[:id]))不起作用.

我想只有搜索paymentsbelong_tobusiness,不这样做的所有款项Payment.exists?(:id => params[:id]).这样我就可以知道这是特定账户的业务付款.

我怎样才能做到这一点?

注意: accounthas_one businessbusinesshas_many payments.

mea*_*gar 12

使用where而不是find,它将返回一个ActiveRecord::Relation代表0或更多记录,你可以链接.exists?:

@payments = account.business.payments.where(id: params[:id])


if @payments.exists?
  # ...
end
Run Code Online (Sandbox Code Playgroud)