<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -31,19 +31,20 @@ module Fixjour
           end
         }
 
-        record.class.reflect_on_all_associations(:has_one).each(&amp;transfer_singular_ids)
-        record.class.reflect_on_all_associations(:belongs_to).each(&amp;transfer_singular_ids)
-
         transfer_plural_ids = proc { |reflection|
-          if associated = record.send(reflection.name)
+          associated = record.send(reflection.name)
+          if associated.length &gt; 0
             associated.each { |rec| rec.new_record? &amp;&amp; rec.save! }
-            key = reflection.options[:foreign_key] || reflection.name.to_s + '_id'
-            valid_attributes[key.to_s + 's'] = associated.map(&amp;:id)
+            key = (reflection.options[:foreign_key] || reflection.name).to_s
+            key.gsub!(/_ids?$/, '')
+            valid_attributes[key.singularize + '_ids'] = associated.map(&amp;:id)
             valid_attributes.delete(reflection.name)
           end
         }
 
-        record.class.reflect_on_all_associations(:has_many).each(&amp;transfer_plural_ids)
+        builder.klass.reflect_on_all_associations(:has_one).each(&amp;transfer_singular_ids)
+        builder.klass.reflect_on_all_associations(:belongs_to).each(&amp;transfer_singular_ids)
+        builder.klass.reflect_on_all_associations(:has_many).each(&amp;transfer_plural_ids)
 
         valid_attributes.stringify_keys!
         valid_attributes.make_indifferent!</diff>
      <filename>lib/fixjour/definitions.rb</filename>
    </modified>
    <modified>
      <diff>@@ -289,7 +289,11 @@ describe Fixjour do
       describe &quot;plural association ids&quot; do
         it &quot;sets appropriate foreign keys&quot; do
           valid_bar_attributes[:people].should be_nil
-          valid_bar_attributes[:people_ids].should_not be_empty
+          valid_bar_attributes[:person_ids].should_not be_empty
+        end
+
+        it &quot;leaves out blank keys&quot; do
+          valid_bar_attributes.should_not have_key('foo_ids')
         end
       end
 </diff>
      <filename>spec/fixjour_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,4 @@
+require 'cgi'
 require 'spec'
 require 'faker'
 require 'rr'
@@ -11,6 +12,12 @@ end
 
 require File.dirname(__FILE__) + '/../lib/fixjour'
 
+def pre(*args)
+  args.each { |arg|
+    puts '&lt;pre&gt;' + CGI.escapeHTML(arg.is_a?(String) ? arg : arg.inspect) + '&lt;/pre&gt;'
+  }
+end
+
 Spec::Runner.configure do |c|
   c.mock_with(:rr)
 end
@@ -36,6 +43,7 @@ build_model(:bars) do
   string :name
 
   has_many :people
+  has_many :foos
 end
 
 build_model(:bazzs) do</diff>
      <filename>spec/spec_helper.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>87966d32db7fdf97c74574da9fccc2ee23943149</id>
    </parent>
  </parents>
  <author>
    <name>Pat Nakajima</name>
    <email>patnakajima@gmail.com</email>
  </author>
  <url>http://github.com/nakajima/fixjour/commit/fa5ed2ed8136660ddb89a2ac9d1fbb80fcdf5261</url>
  <id>fa5ed2ed8136660ddb89a2ac9d1fbb80fcdf5261</id>
  <committed-date>2009-06-25T18:11:36-07:00</committed-date>
  <authored-date>2009-06-25T18:11:36-07:00</authored-date>
  <message>Fixed association key names</message>
  <tree>95772d7faeafffc26f39d9afe4adf05b91e36270</tree>
  <committer>
    <name>Pat Nakajima</name>
    <email>patnakajima@gmail.com</email>
  </committer>
</commit>
