2010-08-06 31 views
0

隱私和用戶都是數組。 我已經拿出了一些邏輯來展示重要的東西。Ruby on Rails/MySQL:如何使用OR在數組上進行搜索?

named_scope :non_employees_and_beloning_to_users, lambda { |args| 
    privacy = args[0] 
    users = args[1] 
    { :conditions => ["(visibility = ? && user_id = ?)", privacy, users] } 
    } 

但基本上,上述生成下方,而當輸入到MySQL編輯器的東西,沒有任何結果顯示。所以,我開始相信這不是在mySOL中使用數組搜索東西的正確方法?

SELECT * 
FROM `proposals` 
WHERE visibility = '1,0' && user_id = '-1,8,9,11'; 

我希望它有

visibility = (1 or 0) AND user_id = (-1 or 8 or 9 or 11) 
+0

數組或對象的數組? :) ids的 – mark 2010-08-06 20:45:15

+0

。對象太大=) – NullVoxPopuli 2010-08-06 22:40:05

回答

1

的影響,因爲它似乎是你有一個逗號分隔能見度值和用戶可以使用MySQL的IN()函數的列表。喜歡的東西:

visibility IN (1,0) AND user_id IN (-1,8,9,11) 

(見此處獲得更多信息的IN():http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_in

另外,您可以知名度和用戶轉換到Ruby數組,然後手動生成類似於SQL代碼。

+0

他們是紅寶石陣列。我怎麼做? – NullVoxPopuli 2010-08-06 22:39:42

0

如果args[0]args[1]是IDS的數組,你只是這樣做:

named_scope :non_employees_and_belonging_to_users, lambda { |args| 
    privacy = args[0] 
    users = args[1] 
    { :conditions => ["visibility IN (?) AND user_id IN (?)", privacy, users] } 
} 

你需要用你的?佔位符括號中爲SQL的IN工作。這應該會生成:

SELECT * FROM `proposals` WHERE visibility IN (1,0) AND user_id IN (-1,8,9,11);