用户有很多任务。
在任务控制器视图中,需要为用户显示任务。 (各种状态的一种观点 - 活跃,分配,关闭等)
获取任务列表的“正确”方法是什么,比如status = active?
#class method on Task; called from TasksController
Task.find_for_user(current_user, :active)
#instance method on user; called from TasksController
current_user.find_tasks :active (user model instance)
#the "common" way that is used in controllers and in many examples/articles
current_user.tasks.find(:where => :status = :active) #Note the "where" part here is pseudo-code (not tested it)
答案 0 :(得分:1)
使用这种关联是我接受过训练的方法。总是工作正常,让Rails处理SQL而不需要任何额外的代码。
所以current_user.tasks.where(:status => :active)
,或者你可以创建一个范围。
app/models/task.rb
中的:
class Task < ActiveRecord::Base
scope :active, :conditions => { :status => :active }
...
end
并在您的控制器中调用current_user.tasks.active
也可能想看看the documentation,其中包含很多其他不错的提示