我有一個循環,它碰到了一對範圍,然後將結果推送到一個數組中。我遇到的問題是如果沒有記錄匹配範圍,它仍然會返回一個ActiveRecord :: AssociationRelation []。我如何過濾這些,所以我沒有讓他們在我的陣列?只有當範圍返回記錄時纔將對象推入數組,而不是空白
實施例:
class Snack
belongs_to :member
scope :red, -> { where(color: 'red') }
scope :snacktypefind, -> (snacktypefind) { where(snacktype: snacktypefind) }
end
class Member
has_many :snacks
def find_snacks(snacktypes)
returnarray = []
snacktypes.each do |snacktype|
returnarray << self.snacks.red.snacktypefind(snacktype)
end
return returnarray
end
end
然後,在圖說我希望:
<% @member.find_snacks(['bannana','orange']).each do |snack| %>
<li>snack.name</li>
<% end %>
在上述情況下,我想在陣列爲[]但相反,它是:
[#<ActiveRecord::AssociationRelation []>, #<ActiveRecord::AssociationRelation []>]
這次我做錯了什麼傻事?再次感謝您的幫助!
如果'.length> 0',爲什麼不推送它們? – 2014-09-04 19:05:38
我嘗試過,並且由於沒有長度函數而導致記錄返回時出錯。但我可能做錯了。 – MechDog 2014-09-04 19:07:54
你可以嘗試'count'。你是否試圖將'concat'值實際應用到數組上,或者維護一個具有值的作用域數組,或者......? – 2014-09-04 19:10:24