草庐IT

ruby - 在 Ruby 中,为什么等于 nil ("Date.new == nil") 返回 nil?

今天写一些rspec时,我遇到了一些意外的行为,将日期(和时间)实例与nil进行比较。这是一个使用原始ruby​​的示例(没有Rails或其他库):user@MacBook-Work~$ruby-vruby1.8.7(2008-08-11patchlevel72)[universal-darwin10.0]user@MacBook-Work~$irb>>1==nil=>false>>"string"==nil=>false>>:sym==nil=>false>>false==nil=>false>>[]==nil=>false>>{}==nil=>false>>Proc.new{}==

ruby-on-rails - Date 与 ActiveSupport::TimeWithZone 的比较失败

我的Waiver模型上有一个age方法,如下所示:defage(date=nil)ifdate.nil?date=Date.todayendage=0unlessdate_of_birth.nil?age=date.year-date_of_birth.yearage-=1ifdate然后我有一个看起来像这样的规范:it"calculatestheproperage"dowaiver=FactoryGirl.create(:waiver,date_of_birth:12.years.ago)waiver.age.should==12end当我运行这个规范时,我得到Comparisono

ruby - 使 Date#parse 采用美国格式而不是欧盟格式

在1.9.2p0中,Date#parse采用UE格式。如果您不相信我,请查看format.rb,第1042行。无论如何,我怎样才能让它采用美国格式,以便:>Date.parse("10/4/2010")=>Mon,04Oct2010而不是4月10日。我已经试过了:classDatedef_parse_eu(str,e)_parse_us(str,e)endend但运气不好。还有其他想法吗? 最佳答案 Date.strptime是你想要的但不幸的是它看起来不像文档有日期格式字符串。我得到以下基于格式字符串的谷歌搜索的工作:1.9.2>

ruby-on-rails - 如何在 ruby​​ ActiveRecord 中销毁没有 ID 列的记录?

我有一个没有ID列的表。当我尝试使用ActiveRecord从中删除时,生成的SQL是DELETEFROMtable_nameWHEREID=NULL,这显然不起作用。有什么方法可以使用ActiveRecord从表中删除,或者至少运行带有占位符的原始SQL删除查询(因此它不易受到SQL注入(inject)的攻击)? 最佳答案 您是否尝试过使用ActiveRecord的delete_all方法?这是我的沙箱中的摘录:>>customer=Customer.new(:login=>'foo')=>#,discount:0,last_fo

ruby-on-rails - Rails 路由到用户名而不是 id

我正在尝试将Rails路由从/users/1更改为/username。我目前对此进行了设置,因此它适用于显示和编辑操作。实际问题是,当我使用以下方法更新用户时:它从不更新,因为更新操作被路由到/users/:id。有什么方法可以路由它以使其适用于/username?(这是在我的表单中作为Action呈现的路线)。一段时间以来,我一直在摸不着头脑。编辑:问题不是路由到用户名,而是它工作正常。问题是表单路由到/username进行更新,但是用户的更新路由仍然是/users/:id而不是:/id。我尝试更新我的路线,但无济于事:match'/:id',:to=>"users#show",:a

ruby - 为什么 Date 在需要之前就存在于 Ruby 中?

在Ruby中,我希望一个不需要的类会引发“未初始化常量”错误。例如,CSV就是这种情况。但是,Date的行为很奇怪:它可用,但显然不起作用,直到需要它为止。~:irb>>Date.new(2012,7,24)ArgumentError:wrongnumberofarguments(3for0)>>require'date'=>true>>Date.new(2012,7,24)=>#如何解释这种行为? 最佳答案 我相信date不是来自irb,而是来自rubygems,特别是thefile其中定义了Gem::Specification:

ruby-on-rails - 从 ActiveRecord 中的一系列 id 中搜索

我怎样才能在范围内做这样的事情?User.find(14000..14500)我需要选择特定范围的用户开始和结束特定的ID。 最佳答案 您可以使用where方法:User.where(id:14000..14500)说明此处的where方法接收一个缩写形式的散列参数,其中id键的值为Range。. 关于ruby-on-rails-从ActiveRecord中的一系列id中搜索,我们在StackOverflow上找到一个类似的问题: https://stacko

ruby - 在 Mongoid 中检索 ID 数组

如何在Mongoid中检索ID数组?arr=["id1","id2"]User.where(:id=>arr)如果您正在检索另一个属性,您可以轻松地做到这一点User.where(:nickname.in=>["kk","ll"])但我想知道如何在mongoid中做到这一点->这应该是一个非常简单和常见的操作 最佳答案 请记住,ID存储为:_id而不是:id。有一个id辅助方法,但是当你做查询时,你应该使用:_id:User.where(:_id.in=>arr)我经常发现获取id列表以进行复杂查询很有用,所以我会这样做:user_

ruby-on-rails - rails - 在 link_to 上传递 id 参数

我正在尝试将当前页面的参数(id)传递到下一页,以便我可以创建依赖模型条目。即项目有标,标属于项目。所以在项目的显示页面上我添加了链接创建并执行url...."http://localhost:3000/bids/new.2"我有defnew@bid=Bid.new@project=Project.find(params[:id])end在出价Controller中,但我不断收到错误消息“无法找到没有ID的项目”???怎么回事,怎么传不上id? 最佳答案 如果您的出价不是项目的嵌套资源,那么您可以将project_id作为参数添加到

ruby-on-rails - 如何从 Rails 中的 date_select 或 select_date 获取日期?

使用select_date返回一个params[:my_date]和year,month和day属性。如何轻松获取Date对象?我希望得到像params[:my_date].to_date这样的东西。我也很乐意使用date_select。 最佳答案 使用date_select分别为日、月和年提供3个独立的键/值对。因此,您可以将它们作为参数传递到Date.new中以创建新的Date对象。Event模型的date_select返回参数示例:"event"=>{"name"=>"Birthday","date(1i)"=>"2012",