2014-12-03 35 views
0

我有两个疑问,在我的应用程序返回的用户记录,选择一套独特的ActiveRecord对象的时候,看起来就像下面:从两个数组

alert_queue = scope(alert.player_id)  
all_queue = User.where(all_alerts: 1) 

无论是scope方法,显然User.where回报用户记录。

我的问题是,有无论如何,我可以合并这两个数组,并只获得唯一的用户记录。如果我按原样合并数组,则可能会为上面的每个查询返回相同的用户并列出两次。我想让他们独一无二。

回答

1

你可以简单地加在一起的阵列,并呼吁uniq它就像这样:

(alert_queue + all_queue).uniq 

下面是一个示例应用程序展示了一个ActiveRecord例如:

2.1.1 :014 > jeff = User.where(name: 'jeff') 
    User Load (0.6ms) SELECT "users".* FROM "users" WHERE "users"."name" = 'jeff' 
=> #<ActiveRecord::Relation [#<User id: 6, name: "jeff", alert: 5, created_at: "2014-12-03 02:50:32", updated_at: "2014-12-03 03:03:43">]> 
2.1.1 :015 > alerts = User.where(alert: 5) 
    User Load (0.6ms) SELECT "users".* FROM "users" WHERE "users"."alert" = 5 
=> #<ActiveRecord::Relation [#<User id: 1, name: nil, alert: 5, created_at: "2014-12-03 02:50:11", updated_at: "2014-12-03 02:50:11">, #<User id: 2, name: nil, alert: 5, created_at: "2014-12-03 02:50:11", updated_at: "2014-12-03 02:50:11">, #<User id: 3, name: nil, alert: 5, created_at: "2014-12-03 02:50:11", updated_at: "2014-12-03 02:50:11">, #<User id: 4, name: nil, alert: 5, created_at: "2014-12-03 02:50:11", updated_at: "2014-12-03 02:50:11">, #<User id: 5, name: nil, alert: 5, created_at: "2014-12-03 02:50:11", updated_at: "2014-12-03 02:50:11">, #<User id: 6, name: "jeff", alert: 5, created_at: "2014-12-03 02:50:32", updated_at: "2014-12-03 03:03:43">]> 
2.1.1 :016 > jeff.count 
    (0.7ms) SELECT COUNT(*) FROM "users" WHERE "users"."name" = 'jeff' 
=> 1 
2.1.1 :017 > alerts.count 
    (0.7ms) SELECT COUNT(*) FROM "users" WHERE "users"."alert" = 5 
=> 6 
2.1.1 :018 > (jeff + alerts).uniq.count 
=> 6 
2.1.1 :019 > (jeff + alerts).uniq 
=> [#<User id: 6, name: "jeff", alert: 5, created_at: "2014-12-03 02:50:32", updated_at: "2014-12-03 03:03:43">, #<User id: 1, name: nil, alert: 5, created_at: "2014-12-03 02:50:11", updated_at: "2014-12-03 02:50:11">, #<User id: 2, name: nil, alert: 5, created_at: "2014-12-03 02:50:11", updated_at: "2014-12-03 02:50:11">, #<User id: 3, name: nil, alert: 5, created_at: "2014-12-03 02:50:11", updated_at: "2014-12-03 02:50:11">, #<User id: 4, name: nil, alert: 5, created_at: "2014-12-03 02:50:11", updated_at: "2014-12-03 02:50:11">, #<User id: 5, name: nil, alert: 5, created_at: "2014-12-03 02:50:11", updated_at: "2014-12-03 02:50:11">] 
+0

上的原始值的作品。它会在ActiveRecord对象上工作吗? – randombits 2014-12-03 02:45:06