On Sat, Oct 17, 2009 at 14:49, Jacob Helwig <[email protected]> wrote: > So, I'm at a loss trying to figure out where I screwed something up here. > > I've got (what I think should be) a fairly straight-forward record > setup, but when I try to create/save a BookEdition record, I get the > following error: NameError: undefined local variable or method > `autosave_associated_records_for_book_editions_users' > > I'm actually getting two slightly different errors, but with almost > the exact same output: > ---------------------------------------------------------------------- > 1) Error: > test_create_valid_book_edition(BookEditionTest): > NameError: undefined local variable or method > `autosave_associated_records_for_book_editions_users' for > #<ActiveSupport::Callbacks::Callback:0xb6e86b40> > /test/unit/book_edition_test.rb:11:in `test_create_valid_book_edition' > > > 2) Error: > test_relates_to_book_editions_and_amazon_images(BookEditionsImageTest): > NameError: undefined local variable or method > `validate_associated_records_for_book' for > #<ActiveSupport::Callbacks::Callback:0xb6e88b70> > vendor/gems/notahat-machinist-1.0.3/lib/machinist/active_record.rb:54:in > `make' > /test/unit/book_editions_image_test.rb:5:in > `test_relates_to_book_editions_and_amazon_images' > ---------------------------------------------------------------------- > > The full project (with the failures) is up on GitHub ( > http://github.com/jhelwig/kamitsukai/tree/wip ), in case I miss > something that would help in tracking this down. > > Here are the two unit tests where I'm seeing this kind of error crop up: > > test/units/book_edition_test.rb > ---------------------------------------------------------------------- > require 'test_helper' > > class BookEditionTest < ActiveSupport::TestCase > test "create valid book edition" do > b = Book.make > e = BookEdition.new( > :book => b > ) > > assert_valid e > assert e.save > assert_equal e.book(true), b > end > > test "create book edition without associated book" do > e = BookEdition.new > assert !e.valid? > end > end > ---------------------------------------------------------------------- > > test/units/book_editions_image_test.rb > ---------------------------------------------------------------------- > require 'test_helper' > > class BookEditionsImageTest < ActiveSupport::TestCase > test "relates to book editions and amazon images" do > edition = BookEdition.make > image = AmazonImage.make > > edition_image = BookEditionsImage.new( > :amazon_image => image, > :book_edition => edition > ) > > assert_valid edition_image > assert edition_image.save > end > end > ---------------------------------------------------------------------- > > assert_valid is defined as: > ---------------------------------------------------------------------- > def assert_valid(record) > assert record.valid?, record.errors.full_messages.join("\n") > end > ---------------------------------------------------------------------- > > > Here are the associated models: > > app/models/book_edition.rb > ---------------------------------------------------------------------- > class BookEdition < ActiveRecord::Base > belongs_to :book > has_many :book_editions_users > has_many :users, > :through => :book_editions_users > has_many :book_editions_images > has_many :images, > :through => :book_editions_images, > :source => :amazon_image > > def validate > errors.add_on_empty %w( book ) > end > > def find_or_create_by_isbn(isbn) > end > end > ---------------------------------------------------------------------- > > app/models/book.rb > ---------------------------------------------------------------------- > class Book < ActiveRecord::Base > validates_presence_of :title > > has_many :editions, :class_name => 'BookEdition' > end > ---------------------------------------------------------------------- > > app/models/book_editions_user.rb > ---------------------------------------------------------------------- > class BookEditionsUser < ActiveRecord::Base > belongs_to :user > belongs_to :book_edition > end > ---------------------------------------------------------------------- > > app/models/user.rb > ---------------------------------------------------------------------- > class User < ActiveRecord::Base > acts_as_authentic > acts_as_authorized_user > acts_as_authorizable > attr_accessible :username, :email, :password, :password_confirmation > > has_many :book_editions_users > has_many :book_editions, > :through => :book_editions_users, > :include => :book > has_and_belongs_to_many :friends, > :class_name => 'User', > :association_foreign_key => 'friend_id' > has_and_belongs_to_many :friend_of, > :class_name => 'User', > :foreign_key => 'friend_id', > :association_foreign_key => 'user_id' > > def validate > errors.add_on_empty %w( username email ) > end > end > ---------------------------------------------------------------------- >
So, to answer my own question, and in the hope of saving others the same frustration I went through: The problem was that as part of the book_editions table, I had a field named 'binding'. This caused ActiveRecord to blow up in very cryptic ways. Renaming 'binding' to 'binding_type' got rid of the errors. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---

