我的關係是Client
可以有很多ClientJobs
。我希望能夠找到執行Job a
和Job b
的客戶端。我使用了3個選擇框,因此我可以選擇最多三個作業進行選擇。選擇框從數據庫填充。Rails:AND運算符在has_many關聯
我知道如何用下面的查詢測試1項工作。但我需要一種方法來使用AND
運算符來測試該客戶端是否存在兩個作業。
@clients = Client.includes("client_jobs").where(
client_jobs: { job_name: params[:job1]})
不幸的是很容易做到像下面的IN
操作,但我想爲AND
語法應該是相似的....我希望
@lients = Client.includes("client_jobs").where(
client_jobs: { job_name: [params[:job1], params[:job2]]})
編輯:發佈的SQL語句從下面的答案中選擇數據庫
Core Load (0.6ms) SELECT `clients`.* FROM `clients`
CoreStatistic Load (1.9ms) SELECT `client_jobs`.* FROM `client_jobs`
WHERE `client_jobs `.`client_id` IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10,........)
第二個查詢遍歷數據庫中的每個client_job。這是從來沒有反對params[:job1], params[:job2]
等測試,因此@clients
回報nil
撞毀我的視圖模板
(undefined method `map' for nil:NilClass
得到這個工作,但我有1個問題。我可以保留'perform_jobs'數組分配參數空字符串?問題是數組假定所有的選擇框都被使用過,所以數組的大小始終是3 – ctilley79
當然,你總是可以做些像'perform_jobs =。select {| j | j .present?}'。 –
BoraMa