小编fl0*_*00r的帖子

i18n:特定型号的错误消息本地化

我可以为每个验证本地化错误消息,但是如何为特定模型创建错误.

普通的语言环境如下所示:

en:
  mongoid:
    errors:
      messages:
        taken: "It is already taken"
Run Code Online (Sandbox Code Playgroud)

但我想改变user模型的消息:

en:
  mongoid:
    errors:
      messages:
        taken: "It is already taken"
        user:
          taken: "It is already taken. %{link_to 'Remember password', reset_password_path'}"
Run Code Online (Sandbox Code Playgroud)

ruby localization ruby-on-rails internationalization

10
推荐指数
1
解决办法
7370
查看次数

是否可以在Rails3中反转命名范围?

在我的Rails3模型中,我有两个命名范围:

scope :within_limit,     where("wait_days_preliminary <= ? ", ::WAIT_TIME_LIMIT.to_i )
scope :above_limit,      where("wait_days_preliminary > ? ",  ::WAIT_TIME_LIMIT.to_i )
Run Code Online (Sandbox Code Playgroud)

基于它们的相似性,我很自然地通过反转第一个来定义第二个.

我怎么能在Rails中做到这一点?

named-scope ruby-on-rails-3

10
推荐指数
1
解决办法
2425
查看次数

Ruby任务:将数字连接到间隔

我有一系列uniq号码.像这样:[1,2,3,4,7,8,10,12].它可以是未分类的.我需要的是获得这个数组的间隔:

intervals_for [1,2,3,4,7,8,10,12]
#=> "1-4, 7-8, 10,12"
Run Code Online (Sandbox Code Playgroud)

我有自己的解决方案:

def intervals_for(array)
  array.sort!
  new_array = []
  array.each do |a|
    if new_array.last and a == new_array.last.last+1
      new_array.last << a
    else
      new_array << [a]    
    end
  end
  new_array.map{|a| a.size > 1 ? "#{a.first}-#{a.last}" : a.first}.join(", ")
end
Run Code Online (Sandbox Code Playgroud)

但我认为这里的某个地方更清洁

ruby

9
推荐指数
1
解决办法
341
查看次数

Mongoid:通过数组ID查找

我通过MapReduce获取了一些id.我按照某些标准对这些ID进行了排序,现在我需要按照这个特定的顺序获取这些对象:

MyModel.find(ids)
Run Code Online (Sandbox Code Playgroud)

对?但它返回的对象不是存储ids的顺序.看起来像是一样的

MyModel.where(:_id.in => ids)
Run Code Online (Sandbox Code Playgroud)

它不会以与存储的id相同的顺序返回获取的对象.

现在我可以做到这一点

ids.map{|id| MyModel.find(id)}
Run Code Online (Sandbox Code Playgroud)

这将完成这项工作,但它会多次敲打数据库.

ruby ruby-on-rails mongodb mongoid

9
推荐指数
2
解决办法
5328
查看次数

所有可能的模型验证错误

我有一个包含大量字段和模型验证的表单.

如何返回可能引发的所有可能的验证错误?

我需要它为所有这些编写语言环境.

我想得到一个这样的列表:

password blank
password too_short
password confirmation
login blank
login invalid
email blank
email too_short
email invalid
Run Code Online (Sandbox Code Playgroud)

等等

ruby forms validation ruby-on-rails

8
推荐指数
1
解决办法
2897
查看次数

MongoDB:按两个字段顺序排序

SELECT (a+b) as c FROM my_table ORDER BY c ASC;
Run Code Online (Sandbox Code Playgroud)

我如何在Mongo中按两列总和订购?

mongodb

8
推荐指数
1
解决办法
2205
查看次数

7
推荐指数
3
解决办法
5173
查看次数

用于生产的Ruby版本

我在Ruby 1.8.7(企业版)上使用Ruby on Rails开发了多年.并且有1.9.2最新版本.

使用1.9.2可以获得哪些好处?编码支持怎么样(我听说过一些问题)?它更快吗?它更稳定吗?等等

目前我即将开始一个新项目.所以我在考虑在生产中使用1.9.2.

ruby ruby-on-rails

7
推荐指数
1
解决办法
815
查看次数

在控制台中执行命令后避免打印

我正在打开非常大的YAML文件.这需要一段时间.但是在它打开之后它会打印所有内容 - 而且需要花费很多倍的时间.

那么如何在Ruby控制台中避免打印结果:

data = YAML.load_file( ... ) # some 1GB data file.
Run Code Online (Sandbox Code Playgroud)

ruby

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

查找树中所有最长的唯一路径

我们假设我们有一个由N个节点组成的树.任务是找到树中所有最长的唯一路径.例如,如果树如下所示:

样本树

然后树中有三条最长的独特路径:1 - 2 - 3 - 4 - 5,6 - 2 - 3 - 4 - 5和1 - 2 - 6.

我想以编程方式查找并存储给定树的所有此类路径.一种方法是计算树中每对节点之间的路径,然后拒绝任何其他路径中包含的路径.但是,我正在寻找一种有效的方法.我的问题如下:

  • 是否可以在小于O(N ^ 2)的范围内计算此信息?我还没有想到一个比O(N ^ 2)更快的解决方案.
  • 如果是的话,你能否引导我走向解决方案.

我想尝试一下的原因是因为我试图解决这个问题:KNODES

algorithm tree data-structures

7
推荐指数
1
解决办法
2654
查看次数