Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.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在设置日期到日期期间删除用户_Ruby On Rails - Fatal编程技术网

Ruby on rails Rails在设置日期到日期期间删除用户

Ruby on rails Rails在设置日期到日期期间删除用户,ruby-on-rails,Ruby On Rails,我想发送一个用户到“假期”。我希望他从我的名单上消失,当开始日期是和回来的结束日期 我在我的模型中写了这个,但它没有表现出来。 “假期”之后的任何事情都会停止工作。 (箭头可能不正确,但这不是导致错误的原因) 结束 但是我得到了“错误数量的参数(0代表1)” 编辑2: 试图简化我的要求 我想执行@posts=Post.where(“假期开始?”,Time.now.strftime(“%Y-%m-%d”)) 如果posts.length>0,则返回帖子 返回self.where(“假期结束=?”,

我想发送一个用户到“假期”。我希望他从我的名单上消失,当开始日期是和回来的结束日期

我在我的模型中写了这个,但它没有表现出来。 “假期”之后的任何事情都会停止工作。 (箭头可能不正确,但这不是导致错误的原因)

结束

但是我得到了“错误数量的参数(0代表1)”

编辑2:

试图简化我的要求

我想执行@posts=Post.where(“假期开始?”,Time.now.strftime(“%Y-%m-%d”)) 如果posts.length>0,则返回帖子 返回self.where(“假期结束<?”,Time.now.strftime(“%Y-%m-%d”)) 结束 使用Athar的解决方案,但删除了“=”符号以获得我想要的效果

谢谢大家

编辑: 提出了一个更好的解决方案

.where.not('vacation_start <= ? AND vacation_end >= ?', Time.now, Time.now)
.where.not('休假开始=?',Time.now,Time.now)

以前的解决方案在繁重的测试下似乎无法完全工作。

您的方法应该是这样的

def self.vacation
  posts = self.where("vacation_start >= ?", Time.now.strftime('%Y-%m-%d'))
  return posts if posts.length > 0
  return self.where("vacation_end <= ?", Time.now.strftime('%Y-%m-%d'))
end

你的方法应该是这样的

def self.vacation
  posts = self.where("vacation_start >= ?", Time.now.strftime('%Y-%m-%d'))
  return posts if posts.length > 0
  return self.where("vacation_end <= ?", Time.now.strftime('%Y-%m-%d'))
end

请告诉我你的if情况。?除非有一些if条件,否则它不会工作。对不起,我很困惑。这里的if不是第一行where吗?不,第一行where,第二行where是return语句。在得到满足和返回where语句之后,必须添加一些条件。你应该这样做。如果#条件和在下一行中返回where(“假期开始>=?”,Time.now.strftime(“%Y-%m-%d”),否则返回where(“假期结束请查看此.def self.vacation(假期))如果假期在哪里(“假期开始请你分享一下你的if条件是什么?除非有if条件,否则它不会工作。对不起,我很困惑。第一个“where”不是吗行,在本例中是if?否,第一行where和第二行where是return语句。必须在if之后添加一些条件,然后返回where语句。您应该这样做。if#条件和下一行返回where(“假期开始>=?”,Time.now.strftime(“%Y-%m-%d”))否则返回where(假期结束请看一下这个。定义自我。假期(假期)如果假期在哪里("假期开始我希望这能起作用。如果你想知道假期结束后帖子是否仍然是空的。重复这个过程,就像假期开始一样,如果仍然长度不大于0,返回self。好的。我想是这样的!非常感谢你,先生。我不会自己解决这个问题。1000谢谢!经过更多的测试。它似乎没有完全起作用。如果假期开始设置为比今天更早的日期,它会像预期的那样消失。但是如果假期结束设置为比今天更早的日期,它不会返回。似乎只有第一个where语句在运行。很抱歉,您更新的问题语句显示假期开始也更新了我的答案。实际上两者都是条件是一样的。傻妹希望这能起作用。如果你想知道假期结束后帖子还是空的话。重复这个过程,就像假期开始时做的一样,如果仍然长度不大于0,那么返回self。好的。我想是这样的!非常感谢你,先生。我不会自己解决这个问题的。1000谢谢!在som之后e更多的测试。它似乎没有完全起作用。如果假期开始设置为比今天更早的日期,它会按预期离开。但是如果假期结束设置为比今天更早的日期,它不会返回。它似乎只是第一个运行where语句的地方。很抱歉,您更新的问题语句显示假期开始也更新了我的答案。事实上,两种情况都是一样的。我真傻
.where.not('vacation_start <= ? AND vacation_end >= ?', Time.now, Time.now)
def self.vacation
  posts = self.where("vacation_start >= ?", Time.now.strftime('%Y-%m-%d'))
  return posts if posts.length > 0
  return self.where("vacation_end <= ?", Time.now.strftime('%Y-%m-%d'))
end
  Post.vacation