我想知道是否有可能以编程方式获取类型(如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)并且与数据库细节分离(但也许类型信息不会是它的一部分,我似乎无法找出它是否是).
谢谢.
我有一个数组,我想迭代并删除一些元素.这不起作用:
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].我怎么能绕过这个?
我试图在给定文件夹中搜索给定类型的所有文件(例如.pdf)并将它们复制到新文件夹.我需要做的是指定一个根文件夹,并在该文件夹及其所有子文件夹中搜索与给定类型(.pdf)匹配的任何文件.任何人都可以告诉我如何搜索根文件夹的子文件夹及其子文件夹等.这听起来像一个递归方法可以解决这个问题,但我无法正确实现一个?(顺便说一下,我正在ruby中实现这个程序).
我无法在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) 鉴于字符串:
"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 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
我有几秒钟.让我们说270921.我怎么能显示这个数字,说它是xx天,yy小时,zz分钟,ww秒?
延迟::作业的自动重试功能很棒,但我现在需要手动重试这项工作.有没有一种方法我可以在工作本身上调用...
Delayed::Job.all[0].perform
Run Code Online (Sandbox Code Playgroud)
或跑步,或某事.我尝试了一些东西,并梳理了文档,但无法弄清楚如何执行手动重试作业.
ruby ×10
activemodel ×1
activerecord ×1
arrays ×1
delayed-job ×1
enums ×1
file-io ×1
iteration ×1
migration ×1
recursion ×1
rubygems ×1
thin ×1
time ×1