我有两个通过 has_many/belongs_to 关联连接的模型:
Class Project < ActiveRecord::Base
has_many :tasks
end
Class Tasks < ActiveRecord::Base
belongs_to :project
end
每个任务都标记有 HABTM 关系:
Class Tasks < ActiveRecord::Base
belongs_to :project
has_and_belongs_to_many :tags
end
我正在尝试根据标签 ID 获取项目列表。Project
我可以通过在我的模型上使用类方法来获取具有特定标记的任务的项目列表:
def by_tag(tag_id)
Project.joins(:tasks => :tags).where(:tags => {:id = tag_id})
end
理想情况下,我希望能够在我的视图中列出给定标签的所有项目及其相关任务。project.tasks
如果我对项目使用典型的查找,我通常可以通过使用来获取属于给定项目的任务列表Project.find(1)
。
但是,当我尝试project.tasks
使用我的新类方法找到的结果时Project.by_tag(1)
,我收到“NoMethodError: Undefined Method 'tasks'”错误。
我查看了命名范围以通过标记结果获取项目,但似乎人们正在远离这种方法,转而支持类方法。真的吗?