0
我有三个型号:未定义的方法:通过
Class Project < ActiveRecord::Base
has_many :tasks
has_many :tags, :through => :tasks
end
Class Tasks < ActiveRecord::Base
belongs_to :project
has_and_belongs_to_many :tags
end
Class Tags < ActiveRecord::Base
has_and_belongs_to_many :tasks
has_many :projects, :through => :tasks
当我打开控制台,我可以让我的项目和任务信息,如预期:
Tag.find(1).projects
Tag.find(1).tasks
如果我想,我可以得到所有的任务,对每一个项目无论标签:
Project.find(1).tasks
无论出于何种原因,如果我得到我无法访问任务通过标签项目... 东西= Tag.find(1).projects something.tasks
...我得到的错误:
undefined method `tasks' for #<ActiveRecord::Relation:0x007feae4af0e70>
我已经找了几个小时,可以找不到解决这个问题的任何东西。基于我发现的一切,它应该工作......但事实并非如此。
我正在使用Rails 3.2.3。
对于你的问题,实际上它不会。它确实为我提供了所有标记的任务,无论项目如何。我正在寻找作为每个项目的子集的任务,因此'Tag.find(1).projects.tasks'尝试。 我只是让它工作,但我想你解释它。我最初的方法是试图同时获得几个不同项目的结果。 'p [0] .tasks'能够让我得到我期待的结果。 感谢您的帮助! – 2012-07-23 13:57:40