小编Ily*_*lya的帖子

使用与今天的日期匹配的日期时间查找记录 - Ruby on Rails

我有一个交易表,需要查找日期与今天的日期相符的记录.

在rails控制台中,我需要匹配的日期字段如下所示.我已经分配了一份记录来处理测试.

ruby-1.9.2-p0 > deal.start
=> Tue, 10 May 2011 00:00:00 UTC +00:00 
Run Code Online (Sandbox Code Playgroud)

如果我尝试找到与今天的开始日期相匹配的任何记录,那么我就是零

ruby-1.9.2-p0 > Deal.find_by_start(Date.today)
=> nil
Run Code Online (Sandbox Code Playgroud)

然后我认为我可以通过将Date.today转换为日期时间来匹配.

ruby-1.9.2-p0 > Date.today.to_datetime
=> Tue, 10 May 2011 00:00:00 +0000 
ruby-1.9.2-p0 > Deal.find_by_start(Date.today.to_datetime)
=> nil
Run Code Online (Sandbox Code Playgroud)

我怎样才能让它发挥作用?我正在使用Rails 3.

编辑:我考虑将它们转换为一致的格式,但是在尝试使用find_by_start方法时不会

ruby-1.9.2-p0 > deal.start.strftime("%a, %e %B %Y") == Date.today.strftime("%a, %e %B %Y")
=> true 

ruby-1.9.2-p0 > Deal.find_by_start.strftime("%a, %e %B %Y") == Date.today.strftime("%a, %e %B %Y")
NoMethodError: undefined method `strftime' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

30
推荐指数
3
解决办法
3万
查看次数

从ruby中的数组中删除尾随的nil值

我有一个像这样的数组:

[["a", nil, nil, nil], ["b", nil, "c", nil], [nil, nil, nil, nil]]
Run Code Online (Sandbox Code Playgroud)

我想从ruby中的数组中删除所有尾随的nil值.

我试过arr.map {|x| x.pop until x.last}但这个方法的问题是,当给定数组中的第3个数组中的数组的所有值都为零时,循环卡住了.

由于until x.last条件,如果所有的值都是nil那么map函数应该返回一个空数组?

应该是什么条件.

输出应该是

[['a'],['b','nil','c'],[]]
Run Code Online (Sandbox Code Playgroud)

请记住,我只想删除nil不在之间的尾随值.

ruby arrays ruby-on-rails

11
推荐指数
2
解决办法
698
查看次数

这些字符串叫什么?什么是南瓜?红宝石

我发现此代码:

sql = <<-SQL.squish
        UPDATE #{klass.constantize.table_name}
           SET uuid = uuid_generate_v4(), updated_at = now()
         WHERE id IN (#{group.map(&:id).join(',')})
           AND uuid IS NULL
      SQL
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?我认为这是某种特殊的字符串定界符。这叫什么?它是特定于Ruby的吗?在squish做什么

ruby ruby-on-rails

7
推荐指数
2
解决办法
1590
查看次数

使用标头渲染JSON

我想cors在我的控制器中使用以下标头呈现JSON :

'Access-Control-Allow-Origin' = '*'.
Run Code Online (Sandbox Code Playgroud)

我试过这个:

def my_action
  render(json: some_params)
  response.headers['Access-Control-Allow-Origin'] = '*'
end
Run Code Online (Sandbox Code Playgroud)

但我有一个AbstractController::DoubleRenderError.有没有办法用标题呈现JSON?

ruby json ruby-on-rails cors

6
推荐指数
2
解决办法
6501
查看次数

单例类和实例变量

为什么instance_variables方法不显示@var_one变量a

a = Object.new

def a.my_eval; yield end

a.my_eval { @var_one = 1 }
a.instance_variables
# => []
instance_variables
# => [@var_one]
Run Code Online (Sandbox Code Playgroud)

ruby eval irb

6
推荐指数
1
解决办法
872
查看次数

为什么Rails可以使用`if`作为哈希键而不是Ruby

在纯Ruby irb中,无法输入{if: 1}.声明不会终止,因为irb认为if不是符号,而是if语句的开头.

那么为什么Rails可以before_filter接受if作为参数呢?该指南的代码如下:

class Order < ApplicationRecord
  before_save :normalize_card_number, if: :paid_with_card?
end
Run Code Online (Sandbox Code Playgroud)

同样的事情也发生了unless.

ruby ruby-on-rails

5
推荐指数
2
解决办法
113
查看次数

`require':不兼容的库版本

我将RVM用作Ruby的版本管理并安装了Ruby 2.2.5。该捆绑软件已完全成功安装。但是,当我使用rails启动rails服务器时,它给了我“要求”:pg的库版本不兼容(LoadError)。

我尝试过多次重新安装rvm。清洗了宝石镶嵌,但问题仍然存在。

我一次又一次收到以下错误:

.rvm/gems/ruby-2.2.5/gems/pg-0.19.0/lib/pg.rb:4:in `require': incompatible library version - /home/user/.rvm/gems/ruby-2.2.5/gems/pg-0.19.0/lib/pg_ext.so (LoadError)
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。

ruby rubygems ruby-on-rails pg gemset

5
推荐指数
0
解决办法
1416
查看次数

Rails 5中具有多态关联的嵌套属性

我创建了一个Address具有多态关联模型,我想救它,虽然客户端模型嵌套的属性,但我得到Address addressable must exist@client.errors.

楷模:

class Client < ApplicationRecord
  has_one :address, as: :addressable, dependent: :destroy
  accepts_nested_attributes_for :address, :allow_destroy => true
end

class Address < ApplicationRecord
  belongs_to :addressable, polymorphic: true
end
Run Code Online (Sandbox Code Playgroud)

控制器:

class ClientsController < ApplicationController

  def new
    @client = Client.new
    @client.create_address
  end

  def create
    @client = Client.new(client_params)

    if @client.save
      ...
    else
      ...
    end
  end

  private
  def client_params
    params.require(:client).permit(:first_name ,:last_name, :company, address_attributes: [:line1, :line2, :line3, :city, :state_province, :postal_code, :country])
  end    
end
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails

4
推荐指数
3
解决办法
2931
查看次数

为什么map {}.compact比each_with_object([])更快?

我做了一些基准测试:

require 'benchmark'

words = File.open('/usr/share/dict/words', 'r') do |file|
  file.each_line.take(1_000_000).map(&:chomp)
end

Benchmark.bmbm(20) do |x|
  GC.start
  x.report(:map) do
    words.map do |word|
      word.size if word.size > 5
    end.compact
  end

  GC.start
  x.report(:each_with_object) do
    words.each_with_object([]) do |word, long_sizes|
      long_sizes << word.size if word.size > 5
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

输出(ruby 2.3.0):

Rehearsal --------------------------------------------------------
map                    0.020000   0.000000   0.020000 (  0.016906)
each_with_object       0.020000   0.000000   0.020000 (  0.024695)
----------------------------------------------- total: 0.040000sec

                           user     system      total        real
map                    0.010000   0.000000   0.010000 (  0.015004)
each_with_object       0.020000   0.000000   0.020000 (  0.024183)
Run Code Online (Sandbox Code Playgroud)

因为我觉得我无法理解这一点 …

ruby

4
推荐指数
1
解决办法
379
查看次数

如何在一个带有2个变量的Ruby中循环

在Tcl中,如果您有一个包含偶数元素的列表,则可以一次循环两个元素.看到这段代码:

foreach { a b } [ list 1 2 3 4 ] {
    puts "${a} ${b}"
}
Run Code Online (Sandbox Code Playgroud)

将输出:

1 2
3 4
Run Code Online (Sandbox Code Playgroud)

如何用Ruby获得相同的行为?

ruby arrays for-loop tcl

3
推荐指数
1
解决办法
174
查看次数

标签 统计

ruby ×9

ruby-on-rails ×7

arrays ×2

cors ×1

eval ×1

for-loop ×1

gemset ×1

irb ×1

json ×1

pg ×1

rubygems ×1

tcl ×1