我有一个类似这样的查询
where("user_id = ? OR privacy = ?", user_id, :public_activity)
和枚举
enum privacy: [:public_activity, :friends_activity, :private_activity]
:public_activity
在此查询中不起作用,而只是作为字符串发送。是否有任何干净的方法可以编写查询而不只是使用整数,而在读取查询时将很难理解该整数?
答案 0 :(得分:3)
您可以使用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])
答案 1 :(得分:2)
在documentation of enum
之后,您应该能够自动使用enum
定义的范围:
Model.where(user_id: user_id).or(Model.public_activity)