繁体   English   中英

活动记录查询枚举列

[英]Active record query enum column

我有一个看起来像这样的查询

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

和枚举

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

:public_activity在此查询中不起作用,仅作为字符串发送。 是否有任何干净的方法可以编写此查询而不仅仅是使用整数,而在读取查询时将很难理解该整数?

您可以使用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])

阅读文件

按照enum文档,您应该能够自动使用enum定义的范围:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM