私のルビーモデルには、モデル「検索」との 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 を 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
最後の 2 つが等しい 5 つの検索オブジェクトを追加すると、最後のオブジェクトを追加すると、次のログが記録されます。
false
[
12
5
8
1
]
1
与えられたドキュメントと例を読むと、これは最後に存在しますか? チェックは true を返す必要があります。ここで何が欠けているのかわかりません。前もって感謝します。