标签: ruby

创建一个no:id列的ActiveRecord数据库表?

我是否可以在ActiveRecord,Ruby on Rails中创建和使用包含no :id列的数据库表.

我不仅要忽略id列,而且希望它绝对不存在.

Table Example

:key_column                         :value_column
0cc175b9c0f1b6a831c399e269772661    0cc175b9c0f1b6a831c399e269772661
4a8a08f09d37b73795649038408b5f33    0d61f8370cad1d412f80b84d143e1257
92eb5ffee6ae2fec3ad71c777531578f    9d5ed678fe57bcca610140957afab571
Run Code Online (Sandbox Code Playgroud)

任何更多信息(如:id_column)都会破坏整个功能.

我如何在rails中实现这样的东西?

ruby mysql security activerecord ruby-on-rails

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

如何使用ruby将base64字符串保存为图像

我正在将我的Ruby on Rails应用程序与usps运输系统集成.一旦您提出邮资请求,您需要支付该邮资并且不可退款.

邮资请求将返回一个xml响应,包括base64字符串,这是一个发货标签.

我能够在视图中呈现运输标签,但为了使其万无一失,我希望能够将该base64字符串保存为我的服务器上的图像,以防发生之间的运输标签出现问题(支付为了它)和邮寄,所以它可能会重印,而无需购买新的.

我的第一个想法如下

# Attempt 1
File.open('shipping_label.gif', 'w+') {|f|
    f.puts Base64.decode64(base_64_encoded_data)
}

# Attempt 2
File.open('shipping_label.gif', 'w+') {|f|
    f.puts Base64.decode64(Base64.decode64(base_64_encoded_data))
}
Run Code Online (Sandbox Code Playgroud)

都没有工作.

ruby file-io base64 ruby-on-rails image

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

使用`?`(问号)在Ruby中获取ASCII字符代码失败

我正处于需要字符的ASCII值的情况下(对于Project Euler问题#22,如果你想要具体的话),我遇到了一个问题.

作为红宝石的新手,我用Google搜索,发现这?是要走的路:?A或者其他什么.但是当我将它合并到我的代码中时,该语句的结果是字符串"A"-no字符代码.同样的问题,与[0]slice(0),两者理论上应该返回ASCII码.

我唯一能想到的是这是一个ruby版本的问题.我正在使用1.9.1-p0,从今天下午的1.8.6升级.我在同一个目录中欺骗了一个工作版本的Ruby,我想我可能已经有了与.zip文件捆绑在一起的文件了,所以我没有下载它们.

那么为什么我的所有ASCII码都变成了实际的字符呢?

ruby ascii char

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

如何在Ruby中创建可重用的块/ proc/lambda?

我想创建一个过滤器,并能够将其应用于数组或散列.例如:

def isodd(i)
  i % 2 == 1
end
Run Code Online (Sandbox Code Playgroud)

我希望能够像这样使用它:

x = [1,2,3,4]
puts x.select(isodd)
x.delete_if(isodd)
puts x
Run Code Online (Sandbox Code Playgroud)

这似乎应该是直截了当的,但我无法弄清楚我需要做什么才能让它发挥作用.

ruby

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

使用Ruby将大写字符串转换为title-case

我正在尝试将Ruby中的全大写字符串转换为小写字符串,但每个单词的第一个字符都是大写字母.例:

将"我的绳索"转换为"我的弦在这里".

我知道我可以使用.downcase方法,但这会使一切都小写("我的字符串在这里").我正在扫描文件中的所有行并进行此更改,那么是否有正则表达式我可以通过ruby来实现此目的?

谢谢!

ruby string

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

shovel(<<)运算符如何在Ruby Hashes中工作?

当我遇到这个时,我正在阅读Ruby Koans教程系列about_hashes.rb:

def test_default_value_is_the_same_object
  hash = Hash.new([])

  hash[:one] << "uno"
  hash[:two] << "dos"

  assert_equal ["uno", "dos"], hash[:one]
  assert_equal ["uno", "dos"], hash[:two]
  assert_equal ["uno", "dos"], hash[:three]

  assert_equal true, hash[:one].object_id == hash[:two].object_id
end
Run Code Online (Sandbox Code Playgroud)

其中的值assert_equals实际上是教程所期望的.但我无法理解使用<<运算符和=运算符之间有何区别?

我的期望是:

  • hash[:one] 将会 ["uno"]
  • hash[:two] 将会 ["dos"]
  • hash[:three] 将会 []

有人可以解释为什么我的期望是错的吗?

ruby hash

49
推荐指数
2
解决办法
9161
查看次数

如何获得当前rake任务的PID?

我正在将一条收割机线放入一个耙子任务,以杀死一些额外产生的红宝石任务,因为它们偶尔会爬行.

system "ps aux | grep 'namespace:taskname' | grep ruby | grep -v grep | awk '{print $2}' | xargs kill -9; echo 'Reaped old namespace:taskname processes.'"
Run Code Online (Sandbox Code Playgroud)

我想补充grep -v $PID_OF_CURRENT_TASK一下,只是为了确保我不会杀死正在运行的当前任务.

我如何获得PID?

ruby shell rake

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

迭代数组的前n个元素

如何迭代最多四个数组对象而不是全部?在以下代码中,它迭代所有对象.我只需要前四个对象.

objects = Products.all();
arr=Array.new
objects.each do |obj|
    arr << obj
end
p arr
Run Code Online (Sandbox Code Playgroud)

可以这样做objects=objects.slice(4),还是迭代是唯一的方法?

编辑:

我还需要打印迭代发生的次数,但我的解决方案objects[0..3](感谢这里的答案)很长.

i=0;
arr=Array.new
objects[0..3].each do |obj|
    arr << obj
    p i;
    i++;
end
Run Code Online (Sandbox Code Playgroud)

ruby arrays

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

Ruby - time.now in UTC

可能重复:
如何在Ruby中将DateTime.now转换为UTC?

如何获取Date-time-milliseconds和UTC的当前时间?防爆.2012-03-22T18:48:40.873Z

我试过了 -

Time.now.utc_offset.to_s
Time.now.xs_datetime
Run Code Online (Sandbox Code Playgroud)

ruby

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

从命令行调用ruby函数

如何从命令行直接调用ruby函数?

想象一下,我会有这个脚本test.rb:

class TestClass
    def self.test_function(some_var)
        puts "I got the following variable: #{some_var}"
    end
end
Run Code Online (Sandbox Code Playgroud)

如果从命令行(ruby test.rb)运行此脚本,则不会发生任何事情(按预期).

有类似的东西ruby test.rb TestClass.test_function('someTextString')吗?我想得到以下输出:I got the following variable: someTextString.

ruby command-line

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