Hello,
I've noticed a strange problem in my custom generator template. At the top of the template, I iterate through the attribute arguments to extract information and construct a Hash. Later in the template, I loop over each_pair of the Hash. The loop executes (I see my DEBUG statement) but the block between the loop never makes it from the template into the output file.
The problem is eliminated if I don't re-define a.name inside my attribute iterator.
<% table = Hash.new
attributes.each do |a| prefix = get_assoc_prefix(a.name) #real attribute name suffix = get_assoc_suffix(a.name) #attribute metadata table[prefix] = suffix a.name = prefix #THIS LINE PREVENTS THE 'if'-block FROM BEING ADDED TO THE OUTPUT FILE end %>
class <%= class_name %> < ActiveRecord::Base def precedence sum = 0 <% ranks_by_attribute.each_pair do |att, rank| puts "DEBUG: att=#{att}, rank=#{rank}" #THIS ALWAYS PRINTS %> if self.<%= att %> sum += <%= rank.to_i %> end <% end %> return sum end end
ruby 1.8.6 (2007-09-23 patchlevel 110) [i686-darwin9.1.0] rails 1.2.5
Am I doing something wrong, or is this a bug?
Thanks, Tom