在Rails中查找记录(对于采用什么方法感到困惑)

时间:2011-01-14 08:32:33

标签: ruby-on-rails-3

用户有很多任务。

在任务控制器视图中,需要为用户显示任务。 (各种状态的一种观点 - 活跃,分配,关闭等)

获取任务列表的“正确”方法是什么,比如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)

1 个答案:

答案 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,其中包含很多其他不错的提示