I have a model Product with an attribute ''brand''. Currently it is a simple attribute, however, I am migrating it to a separate model Brand so that I can have other attributes with each brand. I created the the model and created and ran the migration to create the new table. So far so good. Then I created a separate migration to transfer the data. The up method looks like this: #Migrate Product Brands add_column :products, :brand_id, :integer Product::reset_column_information Product::find(:all).each do |p| brand = Brand::create(''name'' => p.attributes[''brand'']) unless brand = Brand::find_by_name(p.attributes[''brand'']) p.brand = brand p.save! end remove_column :products, :brand The problem is that p.save! is crashing with a cryptic error, somewhere within validations. I have tried creating a brand, associating it, and saving it like this in the console and it seems to work fine. However ''rake migrate'' consistently fails (both with save! and with save). Here''s the relevant section of the stack trace: wrong number of arguments (1 for 2) /usr/local/lib/ruby/gems/1.8/gems/rake-0.7.1/lib/rake.rb:812:in `link'' /usr/local/lib/ruby/gems/1.8/gems/rake-0.7.1/lib/rake.rb:812:in `link'' /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.2/lib/ active_record/validations.rb:300:in `validates_each'' /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.2/lib/ active_record/validations.rb:299:in `validates_each'' /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.2/lib/ active_record/validations.rb:794:in `run_validations'' /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.2/lib/ active_record/validations.rb:788:in `run_validations'' /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.2/lib/ active_record/validations.rb:752:in `valid_without_callbacks'' /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.2/lib/ active_record/callbacks.rb:306:in `valid?'' /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.2/lib/ active_record/validations.rb:733:in `save!'' ./db/migrate//012_decouple_categories_brands.rb:11:in `real_up'' Am I doing something wrong? Is this a Rails bug? I''m guessing someone with deep knowledge of Rails internals will be able to immediately see what''s going on. Since it''s happening in validations maybe the model is helpful as well: class Product < ActiveRecord::Base belongs_to :brand validates_presence_of :name file_column :image, :magick => { :versions => { "thumb" => "50x50", "medium" => "175x125>" } } end By the way, I''m new to the list, so please let me know if I should be posting code snippets externally somewhere or other etiquette issues. Thanks, Gabe
I have a model Product with an attribute ''brand''. Currently it is a simple attribute, however, I am migrating it to a separate model Brand so that I can have other attributes with each brand. I created the the model and created and ran the migration to create the new table. So far so good. Then I created a separate migration to transfer the data. The up method looks like this: #Migrate Product Brands add_column :products, :brand_id, :integer Product::reset_column_information Product::find(:all).each do |p| brand = Brand::create(''name'' => p.attributes[''brand'']) unless brand = Brand::find_by_name(p.attributes[''brand'']) p.brand = brand p.save! end remove_column :products, :brand The problem is that p.save! is crashing with a cryptic error, somewhere within validations. I have tried creating a brand, associating it, and saving it like this in the console and it seems to work fine. However ''rake migrate'' consistently fails (both with save! and with save). Here''s the relevant section of the stack trace: wrong number of arguments (1 for 2) /usr/local/lib/ruby/gems/1.8/gems/rake-0.7.1/lib/rake.rb:812:in `link'' /usr/local/lib/ruby/gems/1.8/gems/rake-0.7.1/lib/rake.rb:812:in `link'' /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.2/lib/ active_record/validations.rb:300:in `validates_each'' /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.2/lib/ active_record/validations.rb:299:in `validates_each'' /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.2/lib/ active_record/validations.rb:794:in `run_validations'' /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.2/lib/ active_record/validations.rb:788:in `run_validations'' /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.2/lib/ active_record/validations.rb:752:in `valid_without_callbacks'' /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.2/lib/ active_record/callbacks.rb:306:in `valid?'' /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.2/lib/ active_record/validations.rb:733:in `save!'' ./db/migrate//012_decouple_categories_brands.rb:11:in `real_up'' Am I doing something wrong? Is this a Rails bug? I''m guessing someone with deep knowledge of Rails internals will be able to immediately see what''s going on. Since it''s happening in validations maybe the model is helpful as well: class Product < ActiveRecord::Base belongs_to :brand validates_presence_of :name file_column :image, :magick => { :versions => { "thumb" => "50x50", "medium" => "175x125>" } } end By the way, I''m new to the list, so please let me know if I should be posting code snippets externally somewhere or other etiquette issues. Thanks, Gabe