Ez_where : i'm puzzled


#1

I have the following code:

condition_clause = "%#{@phrase}%"
logger.info "condition is #{condition_clause}"
unless @phrase.nil?
  condition = Caboose::EZ::Condition.new :affiliates do
    affiliate_name =~ "%#{@phrase}%" # <<< here's the problem
  end
  options[:conditions] = condition.to_sql
  logger.info "ajax param is #{@phrase}"
  logger.info "ez condition is #{condition.to_sql}"
end

The output from the logs is:

ajax param is map
ez condition is

In other words, the the where clause is not being constructed. However,
if I
change the line marked above to:

affiliate_name =~ condition_clause # <<< here’s the fix

Everything works. I’ve ascertained that by the time I’m in operator=~,
all
that’s left is ‘%%’.

Is there something obvious I’ve missed about this straightforward
variable
interpolation?

TIA


View this message in context:
http://www.nabble.com/ez_where-%3A-i'm-puzzled-t1455038.html#a3932303
Sent from the RubyOnRails Users forum at Nabble.com.


#2

s.ross-

Yeah I see what the problem is. I need to add a bit to the

documentation to clarify this. The problem is that inside the
Condition.new block, self is another object internal to the ez_where
plugin. So instance variables with the @ sign are not set because
they are instance variables and you are inside another instance
inside that block. If you make @phrase a local variable by changing
it to phrase without the @ sign it will work properly.

Cheers-
-Ezra


#3

Thanks so much. That explains the behavior.

–steve

View this message in context:
http://www.nabble.com/ez_where-%3A-i'm-puzzled-t1455038.html#a3933836
Sent from the RubyOnRails Users forum at Nabble.com.