acts_as_ta
しかし、find_taggeOR
を含む :condition
を指定すると、SQLの演算順序の問題で挙動がおかしくなります。
この問題を修正するには、以下のようにpluginコードを書き換えればOKです。
acts_as_ta
def find_optio ns_for_fin d_tagged_w ith(tags, options = {})
tags = tags.is_a?(Array) ? TagList.ne w(tags.map(&:to_s)) : TagList.fr om(tags)
options = options.du p
return {} if tags.empty ?
conditions = []
#conditions << sanitize_s ql(options.de lete(:condition s)) if options[:condition s]
if options[:condition s]
conditions << "(#{sanitize_s ql(options.de lete(:condition s))})"
end
要は、オリジナルの :condition
を括弧で括って演算順序の問題が起きないようにしているわけですね。
posted by
genki
on Mon 5 Nov 2007
at 17:02