在我的Rails 2.3.2应用程序中
我有2个型号:
class Post
has_many :approved_comments, :class_name => 'Comment', :conditions => ['approved => ?', true]
end
class Comment
belongs_to :post
end
出于某种原因,当我试图加载我的评论时,我收到了错误
post = Post.find(:first, :conditions => ["permalink=?", permalink], :include => :approved_comments
undefined method `loaded?' for #
来自association_preload.rb第228行
这是一个已知问题,还是我做错了什么或不支持?
我似乎在http://groups.google.com/group/maine-ruby-users-group/browse_thread/thread/796cf58b62f9bc52
找到了一些关于此问题的讨论答案 0 :(得分:1)
FWIW,
我想我可能已经搞砸了,我已经在课堂上定义了两次approved_comments。我发现的不幸的副作用是,急切的加载与那个过滤一起玩,然后进入左加入地狱。所以我通过选择所有内容并在代码中过滤来解决它。
答案 1 :(得分:0)
您可以尝试以下方式:
class Post
has_many :approved_comments, :class_name => 'Comment'
end
class Comment
belongs_to :post
end
然后像:
Post.find(:all, :joins => :approved_comments, :conditions => ["comments.approved = ? AND permalink = ?", true, permalink], :include => :approved_comments)
这将找到您想要的所有帖子,然后急切加载他们的评论。在一个大型记录集中,我建议不要这样做,它会很慢并且会破坏你的乘客/杂种实例的内存大小。