[英]Conditional Proc in ruby/rails?
在我們的代碼中使用Proc選擇記錄。 這是一個例子:
Proc.new { models.where('payment_requestx_payment_requests.paid = ?', params[:paid_s] == 'true')}
如果滿足簡單條件,我們正在尋找一種運行此Proc
的方法。 否則,如果條件返回false,則跳過Proc
。 就像是:
Proc.new { models.where('payment_requestx_payment_requests.paid = ?', params[:paid_s] == 'true') if params[:condition] == 'true' }
條件必須在Proc
內部。 這在紅寶石/鐵軌中可行嗎?
也許使用三元運算符可以幫助?
p = Proc.new {condition ? puts('condition is true!') : puts('condition is false!')}
condition = false
p.call
>> condition is false!
condition = true
p.call
>> condition is true!
重新創建您要處理的設置(一種):
p = Proc.new { [{a:1}, {b:2}] }
p.call
=> [{:a=>1}, {:b=>2}]
帶有if語句:
p = Proc.new { [{a:1},{b:2}] if false }
p.call
=> nil
如果沒有記錄滿足where條件,則活動記錄將返回一個空數組,因此我認為這是您需要提供的內容:
p = Proc.new { false ? [{a:1},{b:2}] : [] }
p.call
=> []
或您的情況:
Proc.new { params[:condition] == 'true' ? models.where('payment_requestx_payment_requests.paid = ?', params[:paid_s] == 'true') : [] }
買者自負。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.