在我的红宝石模型中,我与模型“搜索”有一个 has_and_belongs_to_many 关系:
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
当我阅读给出的文档和示例时,最后一个存在吗?检查应该返回真。我无法弄清楚我在这里缺少什么。提前致谢。