【发布时间】:2014-03-07 08:13:30
【问题描述】:
我有一个控制器动作可以为我获取一些信息:
@account = Account.find(params[:id])
@acct_cust = Customer.all(:account_id => @account.id.to_s)
@acct_cust.each do |ac|
@jobAc << Job.where(:customer_id => ac.id).sort(:start_date)
end
我们有账号,然后我们抓取属于这个账号的所有客户,然后我们抓取每个客户的所有工作,然后把他们塞进一个数组中。
所以我要做的是按 :start_date 值对最终数组 - @jobAc 进行排序。
当然,正如您在日志中看到的那样,我首先将勇敢的查询推送到这个数组中:
控制台日志:
jobAc is [#<MongoMapper::Plugins::Querying::DecoratedPluckyQuery customer_id:
BSON::ObjectId('52705ff24031a0000e000179'), sort: [["start_date", 1]], transformer:
#<Proc:0x007fe3e6f834d8@/usr/local/rvm/gems/ruby-2.0.0-p247/gems/mongo_mapper-0.13.0.beta2
/lib/mongo_mapper/plugins/querying.rb:66 (lambda)>>,
#<MongoMapper::Plugins::Querying::DecoratedPluckyQuery customer_id:
BSON::ObjectId('5279795e2f6984000b00014f'), sort: [["start_date", 1]], transformer:
#<Proc:0x007fe3eb13b8f8@/usr/local/rvm/gems/ruby-2.0.0-p247/gems/mongo_mapper-0.13.0.beta2
/lib/mongo_mapper/plugins/querying.rb:66 (lambda)>>,
#<MongoMapper::Plugins::Querying::DecoratedPluckyQuery customer_id:
BSON::ObjectId('52797beb2f698400ef0000c4'), sort: [["start_date", 1]], transformer:
#<Proc:0x007fe3e9da35e8@/usr/local/rvm/gems/ruby-2.0.0-p247/gems/mongo_mapper-0.13.0.beta2
/lib/mongo_mapper/plugins/querying.rb:66 (lambda)>>,
#<MongoMapper::Plugins::Querying::DecoratedPluckyQuery customer_id:
BSON::ObjectId('527dac2d3d126f0107000059'), sort: [["start_date", 1]], transformer:
#<Proc:0x007fe3eb170cb0@/usr/local/rvm/gems/ruby-2.0.0-p247/gems/mongo_mapper-0.13.0.beta2
/lib/mongo_mapper/plugins/querying.rb:66 (lambda)>>]
如果我使用@jobAc = Job.all(query),我最终会得到一个这样的值数组:
[[{1},{2},{3}],[{1},{2}]]
我什至无法理解我要正确提出的问题 :) 我是在尝试展平哈希数组吗?我试过了,但没有想出我的想法。
我试过了:
@jobAc.sort_by!(&:start_date).reverse but this of course cannot be done while they are plucky queries instead of the actual values.
有什么想法吗?
【问题讨论】:
标签: arrays ruby-on-rails-3 mongodb hash