Tag: 顺序

按两个字段排序,一个是created_at,在Rails中

这是Rails 3中自定义,高效,复杂排序的后续问题 我想开发一种有效的轨道模型订购方法。 假设我在名为“popular”的字段中保存所有对象的评级。 如果我想按此评级排序,我会这样做: Model.order(‘popularity ASC’) 如何通过创建的偏斜来命令? 是否有办法将创建时间戳转换为整数值,然后按流行度排序 – created_at,以便旧对象的评级随着时间的推移而降低? IE之类的东西: Model.order(‘popularity-integerize(created_at) ASC’) 那么:我怎么能这样做,它是否有效?

Rails:获取记录的位置?

假设我有一个Questions模型,我将所有答案都提取到一个特定问题。 我可以轻松地执行each_with_index并找出答案的索引或“位置”(与该特定问题的其他答案相关)。 但是,说我想得到一个具体的答案……我怎么还能弄清楚答案的索引与特定问题相关的所有其他答案的关系。 示例Answer数据: ID text question_id 23 awesome 3 27 boooyah 3 38 snap 3 如果我做了Answer.find(27)我怎么能弄清楚该记录是第二项(假设我按ID排序……虽然我可以在任何领域订购)。

我的哈希堆叠无序。什么是循环,可以通过他们的哈希ID选择它们?

我的哈希看起来像这样: {“6″=>{“:amount_paid”=>”100.00”, “:date_paid”=>”4/22/2009”}, “0”=>{“:amount_paid”=>”100.00”, “:date_paid”=>”2/27/2008”}, “1”=>{“:amount_paid”=>”80.00”, “:date_paid”=>”3/27/2008”}, “2”=>{“:amount_paid”=>”100.00”, “:date_paid”=>”5/8/2008”}, “3”=>{“:amount_paid”=>”100.00”, “:date_paid”=>”6/20/2008”}, “4”=>{“:amount_paid”=>”100.00”, “:date_paid”=>”9/22/2008”}, “5”=>{“:amount_paid”=>”100.00”, “:date_paid”=>”2/20/2009″}} 当我循环使用时,顺序对我很重要: params[:payments].each_with_index do |item, idx| 通过这种方式,我可以添加日期之前的日期。 是否有一个循环可以找到序列”0”..”6″并保持接近相同的语法? 我能想到的唯一另一种选择是确保这些参数按顺序堆叠。 它们来自这样的forms: = text_field_tag “payments[0][:date_paid]” = text_field_tag “payments[0][:amount_paid]” = text_field_tag “payments[1][:date_paid]” = text_field_tag “payments[1][:amount_paid]” = submit_tag ‘punch it chewy!’

是否保证Ruby哈希文字的顺序?

Ruby,自v1.9起,在循环哈希时支持确定性顺序; 首先添加的条目将首先返回。 这是否适用于文字,即{ a: 1, b: 2 }总是在b之前产生? 我做了一个Ruby 2.1(MRI)的快速实验,它实际上是一致的,但是语言在多大程度上保证了所有Ruby实现的工作?

当交叉完成时,顺序是否保留在数组中?

当我做两个数组的交集时,是否有任何保证结果顺序基于第一个数组的顺序? 例如,如果我有 a = [1,2,3] b = [3,2,1] 可以a & b返回[3,2,1] ,而不是[1,2,3] (这是我期望的)? 我无法在RDoc或者Pickaxe的Array文档中找到任何直接解决这个问题的东西。 RubySpec有一个规范,它创建一个包含元素的数组,以便它们首次遇到 ,但是我应该假设YARV Ruby会遵守该规范吗?

validation和规范化部分有序集

我有一对像这样的对: [[“a”, “b”], [“b”, “d”], [“a”, “c”], [“e”, “d”], [“a”, “d”], …, [“s”, “f”]] 检查给定数组是否可以表示部分排序的有效方法是什么? 也就是说,给定数组中没有“循环”,如[“a”, “b”], [“b”, “c”], [“c”, “a”] 。 如果确认数组表示偏序,我想通过去除所有可以通过自反性或传递性导出的对来对其进行标准化。 例如,在上文中,由于存在[“a”, “b”]和[“b”, “d”] ,所以该对[“a”, “d”]是多余的,应该被移除。 1到2之间的顺序无关紧要。 如果2应该在1的过程之前或之内完成,那么,这很好。 我最好在Ruby 1.9.3中使用它,但只需伪代码即可。

保留从Ruby中的文件加载YAML的关键顺序

我想保留从磁盘加载的YAML文件中的键的顺序,以某种方式处理并写回磁盘。 这是在Ruby中加载YAML的基本示例(v1.8.7): require ‘yaml’ configuration = nil File.open(‘configuration.yaml’, ‘r’) do |file| configuration = YAML::load(file) # at this point configuration is a hash with keys in an undefined order end # process configuration in some way File.open(‘output.yaml’, ‘w+’) do |file| YAML::dump(configuration, file) end 不幸的是,一旦构建了哈希,这将破坏configuration.yaml键的顺序。 我找不到控制YAML::load()使用什么数据结构的方法,例如alib的orderedmap 。 我没有运气在网上寻找解决方案。

Ruby – 使用rake以随机顺序执行测试

如何让我的Rails应用程序的测试以随机顺序执行? 是否有使用rake的简单解决方案?

Ruby,一个接一个地运行linux命令,通过SSH和LOG一切

我想在Ruby witch net :: ssh中编写代码,在远程linux机器上逐个运行命令并记录所有内容(在linux机器上称为命令,stdout和stderr)。 所以我写函数: def rs(ssh,cmds) cmds.each do |cmd| log.debug “[SSH>] #{cmd}” ssh.exec!(cmd) do |ch, stream, data| log.debug “[SSH:#{stream}>] #{data}” end end end 例如,如果我想在远程linux上创建新的文件夹和文件:“。/ everylongdirname / anotherlongdirname / a.txt”,并在该目录中列出文件,并在那里找到firefox(这是愚蠢的一点:P)所以我打电话以上程序是这样的: Net::SSH.start(host, user, :password => pass) do |ssh| cmds=[“mkdir verylongdirname”, \ #1 “cd verylongdirname; mkdir anotherlongdirname, \ #2 “cd verylongdirname/anotherlongdirname; touch a.txt”, \ #3 “cd […]

如果条件语句出现在表达式之前或之后,这是否重要?

对不起,如果这是一个愚蠢的问题,但我是一个C#家伙摸索着ruby的方式.. 在ruby中,我注意到很多人这样做: do_something(with params) if 1 = 1 这和之间有什么区别(甚至是轻微的): if 1 = 1 do_something(with params) 还是为了更清晰而写的是同一件事?