标签: ruby

获取ActiveRecord对象中的属性类型

我想知道是否有可能以编程方式获取类型(如AR所知 - 例如在迁移脚本和数据库中)(我知道数据存在于某处).

例如,我可以处理所有属性名称:

ar.attribute_names.each { |name| puts name }
Run Code Online (Sandbox Code Playgroud)

.attributes只返回名称到其当前值的映射(例如,如果未设置字段,则不返回类型信息).

我在一些地方看到了类型信息:

在脚本/控制台中,键入AR实体的名称:

>> Driver
=> Driver(id: integer, name: string, created_at: datetime, updated_at: datetime)
Run Code Online (Sandbox Code Playgroud)

很明显它知道类型.此外,还有.column_for_attribute,它接受一个attr名称并返回一个列对象 - 其类型隐藏在底层数据库列对象中,但它似乎不是一种干净的方式来获取它.

我也感兴趣的是,如果有一种方式对新的"ActiveModel"来说是友好的(rails3)并且与数据库细节分离(但也许类型信息不会是它的一部分,我似乎无法找出它是否是).

谢谢.

ruby activerecord ruby-on-rails activemodel

65
推荐指数
6
解决办法
4万
查看次数

迭代数组时如何使用Array#delete?

我有一个数组,我想迭代并删除一些元素.这不起作用:

a = [1, 2, 3, 4, 5]
a.each do |x|
  next if x < 3
  a.delete x
  # do something with x
end
a #=> [1, 2, 4]
Run Code Online (Sandbox Code Playgroud)

我想a成为[1, 2].我怎么能绕过这个?

ruby arrays iteration

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

在文件夹及其所有子文件夹中搜索特定类型的文件

我试图在给定文件夹中搜索给定类型的所有文件(例如.pdf)并将它们复制到新文件夹.我需要做的是指定一个根文件夹,并在该文件夹及其所有子文件夹中搜索与给定类型(.pdf)匹配的任何文件.任何人都可以告诉我如何搜索根文件夹的子文件夹及其子文件夹等.这听起来像一个递归方法可以解决这个问题,但我无法正确实现一个?(顺便说一下,我正在ruby中实现这个程序).

ruby recursion file-io

65
推荐指数
4
解决办法
5万
查看次数

无法在Windows上安装瘦身

我无法在Windows上安装薄宝石.在构建本机扩展时会发生一些事情.

有人面临同样的问题吗?

这是堆栈跟踪:

>gem install thin --no-ri --no-rdoc
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing thin:
        ERROR: Failed to build gem native extension.

C:/Ruby/bin/ruby.exe extconf.rb
checking for rb_trap_immediate in ruby.h,rubysig.h... no
checking for rb_thread_blocking_region()... yes
checking for inotify_init() in sys/inotify.h... no
checking for __NR_inotify_init in sys/syscall.h... no
checking for writev() in sys/uio.h... no
checking for rb_thread_check_ints()... yes
checking for rb_time_new()... yes
checking for windows.h... yes
checking for winsock.h... yes
checking …
Run Code Online (Sandbox Code Playgroud)

ruby thin

65
推荐指数
2
解决办法
2万
查看次数

解析字符串以添加到URL编码的URL

鉴于字符串:

"Hello there world"
Run Code Online (Sandbox Code Playgroud)

如何创建URL编码的字符串,如下所示:

"Hello%20there%20world"
Run Code Online (Sandbox Code Playgroud)

如果字符串也有其他符号,我也想知道该怎么做,比如:

"hello there: world, how are you"
Run Code Online (Sandbox Code Playgroud)

最简单的方法是什么?我打算解析,然后为此构建一些代码.

ruby ruby-on-rails ruby-on-rails-3

65
推荐指数
4
解决办法
6万
查看次数

ruby DateTime从'mm/dd/yyyy'格式解析

我正在使用ruby 1.9.3并希望Date or Time从' mm/dd/yyyy'日期format字符串中获取对象

Time.zone.parse("12/22/2011")
Run Code Online (Sandbox Code Playgroud)

这是给我的 *** ArgumentError Exception: argument out of range

ruby ruby-on-rails-3

65
推荐指数
4
解决办法
6万
查看次数

如何将270921sec转换为天+小时+分钟+秒?(红宝石)

我有几秒钟.让我们说270921.我怎么能显示这个数字,说它是xx天,yy小时,zz分钟,ww秒?

ruby time

64
推荐指数
5
解决办法
4万
查看次数

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

在Delayed_job中手动重试作业

延迟::作业的自动重试功能很棒,但我现在需要手动重试这项工作.有没有一种方法我可以在工作本身上调用...

Delayed::Job.all[0].perform
Run Code Online (Sandbox Code Playgroud)

或跑步,或某事.我尝试了一些东西,并梳理了文档,但无法弄清楚如何执行手动重试作业.

ruby rubygems ruby-on-rails delayed-job

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

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