Jörg Battermann
2008-Feb-19 22:39 UTC
has_many_polymorphs: Tag could not be preloaded: #<ActiveRecord::Associations::PolymorphicError
Hello there, I''ve also posted this problem at the hmp forum @ http://rubyforge.org/forum/forum.php?thread_id=22433&forum_id=16450 but since this group has some higher traffic, maybe the one or another can help me here, too. I have a little rails (2.0.2) app with very few models so far, one being a user model which has_many text_snippets and also has_many bookmarks. Resources wise, these two are nested under the users .. so callable via /users/1/bookmarks/15 etc. I ran the hmp tagging generator with the two models Bookmark and Textsnippet which led to this entry in the tag.rb file: has_many_polymorphs :taggables, :from => [:bookmarks, :text_snippets], :through => :taggings, :dependent => :destroy, :skip_duplicates => false, :parent_extend => proc { # Defined on the taggable models, not on Tag itself. Return the tagnames associated with this record as a string. def to_s self.map(&:name).sort.join(Tag::DELIMITER) end } So far so good. However, when starting the server, this is being logged: ** has_many_polymorphs: rails environment detected ** has_many_polymorphs: loaded ok ** has_many_polymorphs: autoload hook invoked ** has_many_polymorphs: preloading parent model Tag ** has_many_polymorphs: associating Tag.taggables ** has_many_polymorphs: Tag could not be preloaded: #<ActiveRecord::Associations::PolymorphicError: Could not find a valid class for :bookmarks. If it''s namespaced, be sure to specify it as :"module/bookmarks" instead.> ** has_many_polymorphs: preloading parent model Tagging ** has_many_polymorphs: autoload hook invoked ** has_many_polymorphs: preloading parent model Tag ** has_many_polymorphs: associating Tag.taggables SQL (0.028267) SET NAMES ''utf8'' SQL (0.010828) SET SQL_AUTO_IS_NULL=0 Bookmark Columns (0.103882) SHOW FIELDS FROM `bookmarks` Tagging Columns (0.018256) SHOW FIELDS FROM `taggings` TextSnippet Columns (0.019460) SHOW FIELDS FROM `text_snippets` ** has_many_polymorphs: preloading parent model Tagging Now neither the text_snippets nor the bookmarks are taggable (double- checked via console). However, this error is somewhat misleading or ... well.. dunno.. the Bookmark class does in fact exist: Loading development environment (Rails 2.0.2)>> Bookmark.inspect=> "Bookmark(id: integer, user_id: integer, url: string, title: string, description: text, created_at: datetime, updated_at: datetime)" I am really kind of confused now where to start digging/looking... tried all I could, double-checked whether bookmarks'' files are all correct.. which they are.. but still it ain''t working. Has anyone else come across this somewhere/somehow? Any ideas/ suggestions? :) -J --~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Jörg Battermann
2008-Feb-19 23:35 UTC
Re: has_many_polymorphs: Tag could not be preloaded: #<ActiveRecord::Associations::PolymorphicError
Ok - found it :-/ I have a custom validation in my Bookmark model. This validation is declared in lib/custom_validations.rb ... which is require''ed in environment.rb. Now hmp (the plugin) gets loaded before the custom_validations.rb file is loaded.. and therefore the Bookmark class looks b0rked at that very moment. Once rails has in fact loaded the custom_validations.rb file, everything works fine at the Bookmark-class level.. but hmp actually isn''t. Hrrmm - what can I do now? I mean... I can''t be the only one using custom validations in the lib/ folder in combination with hmp... :-/ -j On Feb 19, 11:39 pm, "Jörg Battermann" <j...-0P9kJONFmSkxbLibK+HVikEOCMrvLtNR@public.gmane.org> wrote:> Hello there, > > I''ve also posted this problem at the hmp forum @http://rubyforge.org/forum/forum.php?thread_id=22433&forum_id=16450 > but since this group has some higher traffic, maybe the one or another > can help me here, too. > > I have a little rails (2.0.2) app with very few models so far, one > being a user model which has_many text_snippets and also has_many > bookmarks. Resources wise, these two are nested under the users .. so > callable via /users/1/bookmarks/15 etc. > > I ran the hmp tagging generator with the two models Bookmark and > Textsnippet which led to this entry in the tag.rb file: > > has_many_polymorphs :taggables, > :from => [:bookmarks, :text_snippets], > :through => :taggings, > :dependent => :destroy, > :skip_duplicates => false, > :parent_extend => proc { > # Defined on the taggable models, not on Tag itself. Return the > tagnames associated with this record as a string. > def to_s > self.map(&:name).sort.join(Tag::DELIMITER) > end > } > > So far so good. However, when starting the server, this is being > logged: > > ** has_many_polymorphs: rails environment detected > ** has_many_polymorphs: loaded ok > ** has_many_polymorphs: autoload hook invoked > ** has_many_polymorphs: preloading parent model Tag > ** has_many_polymorphs: associating Tag.taggables > ** has_many_polymorphs: Tag could not be preloaded: > #<ActiveRecord::Associations::PolymorphicError: Could not find a valid > class for :bookmarks. If it''s namespaced, be sure to specify it > as :"module/bookmarks" instead.> > ** has_many_polymorphs: preloading parent model Tagging > ** has_many_polymorphs: autoload hook invoked > ** has_many_polymorphs: preloading parent model Tag > ** has_many_polymorphs: associating Tag.taggables > SQL (0.028267) SET NAMES ''utf8'' > SQL (0.010828) SET SQL_AUTO_IS_NULL=0 > Bookmark Columns (0.103882) SHOW FIELDS FROM `bookmarks` > Tagging Columns (0.018256) SHOW FIELDS FROM `taggings` > TextSnippet Columns (0.019460) SHOW FIELDS FROM `text_snippets` > ** has_many_polymorphs: preloading parent model Tagging > > Now neither the text_snippets nor the bookmarks are taggable (double- > checked via console). However, this error is somewhat misleading > or ... well.. dunno.. the Bookmark class does in fact exist: > > Loading development environment (Rails 2.0.2)>> Bookmark.inspect > > => "Bookmark(id: integer, user_id: integer, url: string, title: > string, description: text, created_at: datetime, updated_at: > datetime)" > > I am really kind of confused now where to start digging/looking... > tried all I could, double-checked whether bookmarks'' files are all > correct.. which they are.. but still it ain''t working. > > Has anyone else come across this somewhere/somehow? Any ideas/ > suggestions? :) > > -J--~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
AndyV
2008-Feb-20 18:48 UTC
Re: has_many_polymorphs: Tag could not be preloaded: #<ActiveRecord::Associations::PolymorphicError
In Rails 2.x you should be able to use initializers (/config/ initializers + environment) to control the load order. Likely a well- placed ''require'' will solve the problem. On Feb 19, 6:35 pm, "Jörg Battermann" <j...-0P9kJONFmSkxbLibK+HVikEOCMrvLtNR@public.gmane.org> wrote:> Ok - found it :-/ > > I have a custom validation in my Bookmark model. This validation is > declared in lib/custom_validations.rb ... which is require''ed in > environment.rb. Now hmp (the plugin) gets loaded before the > custom_validations.rb file is loaded.. and therefore the Bookmark > class looks b0rked at that very moment. > > Once rails has in fact loaded the custom_validations.rb file, > everything works fine at the Bookmark-class level.. but hmp actually > isn''t. > > Hrrmm - what can I do now? I mean... I can''t be the only one using > custom validations in the lib/ folder in combination with hmp... :-/ > > -j > > On Feb 19, 11:39 pm, "Jörg Battermann" <j...-0P9kJONFmSkxbLibK+HVikEOCMrvLtNR@public.gmane.org> > wrote: > > > Hello there, > > > I''ve also posted this problem at the hmp forum @http://rubyforge.org/forum/forum.php?thread_id=22433&forum_id=16450 > > but since this group has some higher traffic, maybe the one or another > > can help me here, too. > > > I have a little rails (2.0.2) app with very few models so far, one > > being a user model which has_many text_snippets and also has_many > > bookmarks. Resources wise, these two are nested under the users .. so > > callable via /users/1/bookmarks/15 etc. > > > I ran the hmp tagging generator with the two models Bookmark and > > Textsnippet which led to this entry in the tag.rb file: > > > has_many_polymorphs :taggables, > > :from => [:bookmarks, :text_snippets], > > :through => :taggings, > > :dependent => :destroy, > > :skip_duplicates => false, > > :parent_extend => proc { > > # Defined on the taggable models, not on Tag itself. Return the > > tagnames associated with this record as a string. > > def to_s > > self.map(&:name).sort.join(Tag::DELIMITER) > > end > > } > > > So far so good. However, when starting the server, this is being > > logged: > > > ** has_many_polymorphs: rails environment detected > > ** has_many_polymorphs: loaded ok > > ** has_many_polymorphs: autoload hook invoked > > ** has_many_polymorphs: preloading parent model Tag > > ** has_many_polymorphs: associating Tag.taggables > > ** has_many_polymorphs: Tag could not be preloaded: > > #<ActiveRecord::Associations::PolymorphicError: Could not find a valid > > class for :bookmarks. If it''s namespaced, be sure to specify it > > as :"module/bookmarks" instead.> > > ** has_many_polymorphs: preloading parent model Tagging > > ** has_many_polymorphs: autoload hook invoked > > ** has_many_polymorphs: preloading parent model Tag > > ** has_many_polymorphs: associating Tag.taggables > > SQL (0.028267) SET NAMES ''utf8'' > > SQL (0.010828) SET SQL_AUTO_IS_NULL=0 > > Bookmark Columns (0.103882) SHOW FIELDS FROM `bookmarks` > > Tagging Columns (0.018256) SHOW FIELDS FROM `taggings` > > TextSnippet Columns (0.019460) SHOW FIELDS FROM `text_snippets` > > ** has_many_polymorphs: preloading parent model Tagging > > > Now neither the text_snippets nor the bookmarks are taggable (double- > > checked via console). However, this error is somewhat misleading > > or ... well.. dunno.. the Bookmark class does in fact exist: > > > Loading development environment (Rails 2.0.2)>> Bookmark.inspect > > > => "Bookmark(id: integer, user_id: integer, url: string, title: > > string, description: text, created_at: datetime, updated_at: > > datetime)" > > > I am really kind of confused now where to start digging/looking... > > tried all I could, double-checked whether bookmarks'' files are all > > correct.. which they are.. but still it ain''t working. > > > Has anyone else come across this somewhere/somehow? Any ideas/ > > suggestions? :) > > > -J--~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---