Ruby on rails 如何正确使用ruby类集-Rails 5
我对如何使用rails方法Ruby on rails 如何正确使用ruby类集-Rails 5,ruby-on-rails,ruby,Ruby On Rails,Ruby,我对如何使用rails方法set查找网络中未被邀请参加活动/社交活动的朋友列表感到非常困惑 我有朋友,其中列出了我所有的朋友(总共2个朋友) 我有一个社交/活动,我邀请了我网络中的所有朋友参加social\u invested\u friends 我现在正在通过比较“朋友和社会邀请的朋友”来查找未邀请的朋友列表 请告诉我怎么做好吗 这是终点站 2.3.0 :207 > ap friends = Set.new((inviter.friends).to_a) [ [0] #&
set
查找网络中未被邀请参加活动/社交活动的朋友列表感到非常困惑
- 我有
,其中列出了我所有的朋友(总共2个朋友)朋友
- 我有一个社交/活动,我邀请了我网络中的所有朋友参加
social\u invested\u friends
- 我现在正在通过比较“
和朋友
”来查找未邀请的朋友列表社会邀请的朋友
2.3.0 :207 > ap friends = Set.new((inviter.friends).to_a)
[
[0] #<User:0x007fa6f882adb0> {
:id => 2,
:email => "emma@gmail.com"
},
[1] #<User:0x007fa6f7191db0> {
:id => 4,
:email => "jesse@gmail.com"
}
]
2.3.0 :213 > ap social_invited_friends = Set.new(Invite.where(user: inviter, invitee: nil, social: social).to_a.map(&:users))
Invite Load (0.2ms) SELECT "invites".* FROM "invites" WHERE "invites"."user_id" = 1 AND "invites"."invitee_id" IS NULL AND "invites"."social_id" = 6
User Load (0.1ms) SELECT "users".* FROM "users" INNER JOIN "invites_users" ON "users"."id" = "invites_users"."user_id" WHERE "invites_users"."invite_id" = ? [["invite_id", 30]]
User Load (0.3ms) SELECT "users".* FROM "users" INNER JOIN "invites_users" ON "users"."id" = "invites_users"."user_id" WHERE "invites_users"."invite_id" = ? [["invite_id", 31]]
[
[0] [
[0] #<User:0x007fa6f7191f90> {
:id => 2,
:email => "emma@gmail.com"
},
[1] #<User:0x007fa6f7191db0> {
:id => 4,
:email => "jesse@gmail.com"
}
]
]
=> nil
2.3.0 :214 >
我在终端中得到以下结果
2.3.0 :207 > ap social_univited_friends = friends.difference(social_invited_friends)
[
[0] #<User:0x007fa6f882adb0> {
:id => 2,
:email => "emma@gmail.com"
},
[1] #<User:0x007fa6f7191db0> {
:id => 4,
:email => "jesse@gmail.com"
}
]
仔细查看ap社交网站邀请的朋友:
[
[0] [
[0] #<User ...
[1] #<User ...
]
]
[
[0] #<User ...
[1] #<User ...
]
Set.new(
Invite.where(...)
.flat_map(&:users)
)
social\u invested\u friends
是一个包含一个元素的集合,该元素是由User
实例组成的两个元素数组friends
是包含两个元素的集合,这两个元素是User
实例
在构建社交朋友时,您可能希望使用而不是map
:
[
[0] [
[0] #<User ...
[1] #<User ...
]
]
[
[0] #<User ...
[1] #<User ...
]
Set.new(
Invite.where(...)
.flat_map(&:users)
)
flat\u map
也会处理数组化所有内容,这样你也可以在构建社交好友时将放到a
呼叫中
您还应该能够在数据库中完成整个工作,但首先要让它工作起来