Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 3显示来自partials的任务_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

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