【问题标题】:Can I do an 'in' search with searchlogic/metasearch in Rails 3 passing an array?我可以在 Rails 3 中使用 searchlogic/metasearch 进行“in”搜索吗?
【发布时间】:2011-03-26 04:06:28
【问题描述】:

我正在使用acts_as_network gem,它允许我通过'User.friends'获取用户的所有朋友

我想创建一个“朋友源”,通过搜索事件记录来显示所有朋友的所有最近事件,其中事件:

  Event  | giver_id | receiver_id | date |

概念上我希望能够做到这一点:

feed = Events.giver_id_or_receiver_id_in(User.friends).date_gt(Date.today.2.weeks.ago)

这应该给我一个所有事件的数组,其中 giver_id 或 receiver_id 在过去两周创建的朋友数组 (User.friends) 中。

我该怎么做?

【问题讨论】:

    标签: ruby-on-rails searchlogic


    【解决方案1】:

    IN 查询可以使用:where(:giver_id => array)

    所以我认为你可以这样做:

    scope :party_in, lambda {|friends| where(:giver_id => friends) | where(:receiver_id => friend) }
    

    然后,您可以将范围与查询的其余部分链接起来:

    feed = Events.party_in(User.friends).date_gt(Date.today.2.weeks.ago)
    

    【讨论】:

    • 这是使用 metawhere 代替 rd_searchlogic 吗?我使用“朋友”还是“朋友”?交易
    • 顺便说一句,User.friends 不是 just ID 的数组(例如 ["1", "2", "3"]),它是代表实际的数组用户......
    • 哦,是的,那是 metawhere,抱歉。如果 User.friends 没有自动调用 to_param ,你可以做 User.friends.map(&:id)
    猜你喜欢
    • 2011-09-29
    • 2011-04-09
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多