has_many_polymorphs problem
i have problem with has_many_polymorphs, maybe you can help me.
I have some models
class Issue < ActiveRecord::Base
has_many_polymorphs :things, :from => [:applications], :through => :relations
ene
class NewsArticle < ActiveRecord::Base
has_many_polymorphs :things, :from => [:applications], :through => :relations
end
class Application < ActiveRecord::Base
has_many_polymorphs :contents, :from => [:news_articles, :issues], :through => :relations
end
class Relation < ActiveRecord::Base
belongs_to :content, :polymorphic => true
belongs_to :thing, :polymorphic => true
acts_as_double_polymorphic_join(
:contents => [:news_articles, :issues],
:things => [:applications]
)
end
but on attempt to get applications for some issue i see following
>> i = Issue.first
+----+--------+---------+----------+---------------+----------------+-------------+-------------+-----------------+---------------------------+---------------------------+
| id | closed | user_id | answered | answers_count | comments_count | views_count | flags_count | favorites_count | created_at | updated_at |
+----+--------+---------+----------+---------------+----------------+-------------+-------------+-----------------+---------------------------+---------------------------+
| 1 | false | 2 | | 2 | 2 | 0 | 0 | 0 | 2010-04-22 00:14:56 +0400 | 2010-05-01 02:35:30 +0400 |
+----+--------+---------+----------+---------------+----------------+-------------+-------------+-----------------+---------------------------+---------------------------+
1 row in set
>> i.applications
ActiveRecord::HasManyThroughSourceAssociationNotFoundError: Could not find the source association(s) :application in model Relation. Try 'has_many :applications, :through => :relation, :source => <name>'. Is it one of :content or :thing?
from /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/reflection.rb:289:in `check_validity!'
from /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/associations/has_many_through_association.rb:5:in `initialize'
from /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/associations.rb:1300:in `new'
from /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/associations.rb:1300:in `applications'
from (irb):2
from :0
>>
in logs i see
** has_many_polymorphs: autoload hook invoked
** has_many_polymorphs: preloading parent model Application
** has_many_polymorphs: preloading parent model Issue
** has_many_polymorphs: preloading parent model NewsArticle
** has_many_polymorphs: preloading parent model Relation
** has_many_polymorphs: autoload hook invoked
** has_many_polymorphs: preloading parent model Application
** has_many_polymorphs: preloading parent model Issue
** has_many_polymorphs: preloading parent model NewsArticle
** has_many_polymorphs: preloading parent model开发者_开发技巧 Relation
Issue Load (0.9ms) SELECT * FROM "issues" LIMIT 1
How to solve it?
PS: Rails 2.3.5, Postgresql
I've done this issue :) The problem is - that documentation does not contains information, that connected models (in this issue - Issue, NewsArticle, Application) should not contain anything about relations (like has_many_polymorphs :things, :from => [:applications], :through => :relation)
精彩评论