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]))不起作用.
我想只有搜索payments是belong_to说business,不这样做的所有款项Payment.exists?(:id => params[:id]).这样我就可以知道这是特定账户的业务付款.
我怎样才能做到这一点?
注意:
accounthas_one business和businesshas_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)