2016-03-20 16 views
0

modelinden gelen bir diziyle, bir süredir bu sorun üzerinde sıkışmış durumdayım.'NOT IN' veya .not()

Kullanıcı kimliği içeren bir dizi içeren bir model makalem var. İlk makale kullanıcı tarafından görülmüştür Örnek için

add_column :articles, :seenby, :string, array:true 

[ "1", "2": Belirli aldım maddesinde

böylece kullanıcı tarafından görülmeyen tüm bu makale almak için çalışıyorum "3"]

şimdi kullanıcıyı 4 var ve henüz yüzden

Article.where('4 NOT IN (?)', :seenby) 

ama böyle bir sorgu olurdu onun tarafından görülmeyen tüm makale bulmak istiyorum çalışmıyor ben (çok .NOT ile) çok şey denedik ama her zaman gelir örneği gibi bir şey mi:

something.where('4 NOT IN (?)', ['some', 'value']) 

ya da Buradan

something.not(field:value) 

Ben yazının seenby gerekir. Eğer yardımcı olabilir

Thx çok :)

+1

kullanabilir? Her veritabanı türü dizileri desteklemez. "Makale" ve "Kullanıcı" adlı bir "Seen" tablosuna sahip olmanız daha iyi olabilir. – SteveTurczyn

+0

Merhaba, hayır dizilerim gayet iyi çalışıyor, postgre kullanıyorum. Evet, aslında yeni bir tablo oluşturmam gerekebilir ama bundan kaçınmak istedim. – hadesMM

cevap

1

Sen kullandığınız veritabanının ne tür ANY

Article.where('NOT ? = ANY (seen_by)', 4) 
+0

Teşekkürler efendim :) – hadesMM