Ruby on rails Rails 3显示来自partials的任务
我的任务属于不同的模型,但始终分配给公司和/或用户。我试图缩小显示的范围,将它们按到期日分组,而不进行许多查询 有一个应用程序助手Ruby on rails Rails 3显示来自partials的任务,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我的任务属于不同的模型,但始终分配给公司和/或用户。我试图缩小显示的范围,将它们按到期日分组,而不进行许多查询 有一个应用程序助手 def current_tasks if user_signed_in? && !current_company.blank? @tasks = Task.where("assigned_company = ? OR assigned_to = ?", current_company, current_user) @current
def current_tasks
if user_signed_in? && !current_company.blank?
@tasks = Task.where("assigned_company = ? OR assigned_to = ?", current_company, current_user)
@current_tasks = @tasks
else
@current_tasks = nil
end
end
那么在我看来我有
<%= render :partial => "common/tasks_show", :locals => { :tasks => current_tasks }%>
如果您想调用
当前任务。请选择“今天到期”
,然后它必须是一个类方法,类似这样(将Ruby转换为SQL):
def self.select_due_today_
选择('due_at<?或due_at不为空',Time.now.midnight)
结束
或者,您可以拥有与作用域几乎相同的东西—但将其放在lambda中,以便在调用作用域时调用Time.now.midnight
,而不是在定义它时
[编辑以将
IS NULL
切换到IS NOT NULL
-这反映了问题中的Ruby,但没有意义,因为它将否定或的左侧含义]定义了选择明天到期的位置以及它的代码是什么?抱歉,它在我的类任务模型中。尝试使用代码不再查询sql。在当前任务中,我已经获得了所有任务一次。现在尝试缩小显示内容的范围。您必须在问题中遗漏一些内容,因为考虑到您所拥有的内容,绝对没有任何理由select\u due\u tomory
应该在您执行当前任务时被调用。select\u due\u today
。您的当前任务助手也违反了MVC。您能否详细说明它是如何违反MVC的?目标是在不同的视图中显示任务。在您的任务模型中,您有一个类似于(用户)
的方法,而不是在帮助器中有一个查询。因此,它是命名范围。试图避免为due_today、tomm等打多个电话。
def select_due_today
self.to_a.select{|task|task.due_at < Time.now.midnight || !task.due_at.blank?}
end
def self.select_due_today
select( 'due_at < ? OR due_at IS NOT NULL', Time.now.midnight )
end