0
我的消費者模型上有一個類作用域的類方法(作用範圍爲ActiveRecord::Relation
,返回ActiveRecord::Relation
,可以菊花鏈方式)並返回某些使用者的雙打。我希望它只返回唯一的消費者,並且我似乎無法找到使用Rails助手或正確的SQL傳入以獲得我想要的內容的方法。我覺得這裏有一個簡單的解決方案 - 這不是一個複雜的問題。強化基於單列的關係的唯一性
我基本上想要Array#uniq
,但是對於ActiveRecord::Relation
。我嘗試了SELECT DISTINCT聲明
Consumer.joins(...).where(...).select('DISTINCT consumers.id')
它歸還的財產正確的「關於consumers.id獨特性」,但它只是返回的消費者的ID,這樣當我最終加載的關係中,消費者並沒有自己其他屬性。 沒有SELECT DISTINCT:
my_consumer = Consumer.joins(...).where(...).first
my_consumer.status # => "active"
使用select distinct:
my_consumer = Consumer.joins(...).where(...).select('DISTINCT consumers.id').first
my_consumer.status # => ActiveModel::MissingAttributeError: missing attribute: status
我沒想到的是一個ActiveRecord::Relation
將永遠載入小於整個模型,但我想它會與SELECT語句。當我在包含它的類的select語句後查詢Relation時,它返回Consumer
,這看起來很奇怪。