热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

RubyonRails的当前年份-CurrentyearinRubyonRails

HowcanIgetcurrentyearinRubyonRails?如何在RubyonRails中获得当前年份?Itriedavarietyofthings,

How can I get current year in Ruby on Rails?

如何在Ruby on Rails中获得当前年份?

I tried a variety of things, including

我尝试过各种各样的东西,包括

  • Date.current.year
  • Time.now.year

The problem is they return the previous year in cases where year changes after launching the server (eg. after new year's).

问题是,如果在启动服务器之后年份发生变化(例如新年之后),它们会在前一年返回。

Relevant code:

Model brewery.rb

class Brewery 

Problem occurs when creating a new brewery, so I assumed Date.today.year would be evaluated whenever that action takes place.

创建新啤酒厂时会出现问题,因此我假设每当该操作发生时都会评估Date.today.year。

4 个解决方案

#1


10  

In your example Date.today.year is evaluated only once - when the class is loaded and therefore doesn't change anymore.

在您的示例中,Date.today.year仅被评估一次 - 当类加载时因此不再更改。

When you use a lambda in your validator declaration then it re-evaluates the block each time when it runs the validation for that attribute:

在验证器声明中使用lambda时,每次运行该属性的验证时,它都会重新计算该块:

validates :year, numericality: { 
  only_integer: true, 
  less_than_or_equal_to: ->(_brewery) { Date.current.year }
}

Furthermore, I suggest using Date.current instead of Date.today, because the current method pays attention to timezone settings.

此外,我建议使用Date.current而不是Date.today,因为当前方法会关注时区设置。

#2


1  

Actually, it's better to use Time.current instead of Time.now in Rails, because the first one adopts current time zone. http://edgeguides.rubyonrails.org/active_support_core_extensions.html#time-current

实际上,最好在Rails中使用Time.current而不是Time.now,因为第一个采用当前时区。 http://edgeguides.rubyonrails.org/active_support_core_extensions.html#time-current

#3


1  

@spickermann's recipe seems to be correct, I'll just try to explain why it works.

@ spickermann的配方似乎是正确的,我只是试着解释它为什么有效。

The code you write inside your class is executed at compile time, when Ruby compiles to the VM bytecode. Therefore, the Date.today.year in your validator is calculated exactly once, when the class is compiled.

你在类中编写的代码是在编译时执行的,当Ruby编译为VM字节码时。因此,在编译类时,验证程序中的Date.today.year只计算一次。

By introducing the lambda you enable ActiveRecord to use the return value of said lambda. The lambda itself will be executed with each validation.

通过引入lambda,您可以使ActiveRecord使用所述lambda的返回值。 lambda本身将在每次验证时执行。

Hope that made the situation clearer!

希望使情况更加清晰!

#4


1  

<%= Time.zone.now.year %> -- factors in time zone

<%= Time.zone.now.year%> - 时区中的因素


推荐阅读
  • Summarize function is doing alignment without timezone ?
    Hi.Imtryingtogetsummarizefrom00:00otfirstdayofthismonthametric, ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Firefox火狐浏览器关闭到http://detectportal.firefox.com的流量问题解决办法
    本文介绍了使用Firefox火狐浏览器时出现关闭到http://detectportal.firefox.com的流量问题,并提供了解决办法。问题的本质是因为火狐默认开启了Captive portal技术,当连接需要认证的WiFi时,火狐会跳出认证界面。通过修改about:config中的network.captive-portal-service.en的值为false,可以解决该问题。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 在Windows10系统上使用VMware创建CentOS虚拟机的详细步骤教程
    本文详细介绍了在Windows10系统上使用VMware创建CentOS虚拟机的步骤,包括准备条件、安装VMware、下载CentOS ISO文件、创建虚拟机并进行自定义配置、设置虚拟机的ISO与网络、进行安装和配置等。通过本文的指导,读者可以轻松地创建自己的CentOS虚拟机并进行相应的配置和操作。 ... [详细]
  • 判断编码是否可立即解码的程序及电话号码一致性判断程序
    本文介绍了两个编程题目,一个是判断编码是否可立即解码的程序,另一个是判断电话号码一致性的程序。对于第一个题目,给出一组二进制编码,判断是否存在一个编码是另一个编码的前缀,如果不存在则称为可立即解码的编码。对于第二个题目,给出一些电话号码,判断是否存在一个号码是另一个号码的前缀,如果不存在则说明这些号码是一致的。两个题目的解法类似,都使用了树的数据结构来实现。 ... [详细]
  • 在本教程中,我们将看到如何使用FLASK制作第一个用于机器学习模型的RESTAPI。我们将从创建机器学习模型开始。然后,我们将看到使用Flask创建AP ... [详细]
  • java程序设计试题_《Java语言程序设计》期末考试模拟试题——填空题和编程题...
    一、根据题意,填写出空格中的内容Java平台包括三个技术方向,其中J2ME代表____________、J2SE代表___________、J2EE代表 ... [详细]
  • ①页面初始化----------收到客户端的请求,产生相应页面的Page对象,通过Page_Init事件进行page对象及其控件的初始化.②加载视图状态-------ViewSta ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了markdown[软件代理设置]相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 详解 Python 的二元算术运算,为什么说减法只是语法糖?[Python常见问题]
    原题|UnravellingbinaryarithmeticoperationsinPython作者|BrettCannon译者|豌豆花下猫(“Python猫 ... [详细]
author-avatar
aGreadyCat__895
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有