代码之家  ›  专栏  ›  技术社区  ›  Qwertie

活动记录查询枚举列

  •  0
  • Qwertie  · 技术社区  · 6 年前

    我有一个这样的问题

    where("user_id = ? OR privacy = ?", user_id, :public_activity)
    

    以及枚举

    enum privacy: [:public_activity, :friends_activity, :private_activity]
    

    :public_activity 在此查询中不起作用,只是作为字符串发送。有没有干净的方法来编写这个查询,而不只是使用一个在读取查询时很难理解的整数?

    2 回复  |  直到 6 年前
        1
  •  3
  •   Roman Kiselenko    6 年前

    您可以使用key来获取整数,这里有一个 例子

    # app/models/user.rb
    class Model < AR
      enum privacy: [:public_activity, :friends_activity, :private_activity]
    end
    

    Model.privacies[:public_activity] => 0
    

    这个 where

    where("user_id = ? OR privacy = ?", user_id, Model.privacies[:public_activity])
    

    Read documentation

        2
  •  2
  •   spickermann    6 年前

    跟随 documentation of enum 您应该能够使用 自动:

    Model.where(user_id: user_id).or(Model.public_activity)