在我的紅寶石的模型我有一個模型has_and_belongs_to_many關係「搜索」:collection.exists?謊言對我
has_and_belongs_to_many :searches
我要添加新的搜索對象只有在沒有已經存在了,所以我寫了:
def append_unless_already_there search
unless searches.exists?(search)
searches << search
end
但是,添加2次新對象傳遞條件,並導致sql異常。試圖用search.id替換搜索,但不改變任何內容。 我添加了一些記錄到代碼:
def append_unless_already_there search
puts ""
puts searches.exists?(search)
unless searches.exists?(search)
puts "["
searches.each do |s|
puts s.id
end
puts "]"
puts search.id
searches << search
end
end
添加5名的檢索對象,其中最後2是相等的,結果在下面的日誌記錄添加的最後一個對象時:
false
[
12
5
8
1
]
1
正如我讀給出的文件和例子,這最後的存在?檢查應該返回true。我無法弄清楚我在這裏錯過了什麼。提前致謝。
是的。這是訣竅。謝謝!仍然好奇爲什麼存在?沒有工作,而它應該根據API來完成。非常感謝。 – Jos 2012-04-05 10:51:04
看看我的編輯部分 – Vik 2012-04-05 11:01:36
mm,嘗試過search.exists?(id = search.id)並添加了puts命令。在方法的第一行存在?(id = search.id)。這會記錄5次錯誤(而第5個應爲true)並引發ConstraintException。 – Jos 2012-04-05 11:11:49