ruby-on-rails – 如何在rails中添加多个枚举的范围
发布时间:2020-12-17 03:41:54 所属栏目:百科 来源:网络整理
导读:我有一个选择,显示一个对象的所有枚举: %= f.select( :state_user,User.states.keys.map {|state| [state.titleize,state] }) % 如何创建允许我选择多个状态的范围? 例如,我想过滤所有非活动或暂停的用户. 谢谢 解决方法 不确定你是否还在寻找这样的东西,
我有一个选择,显示一个对象的所有枚举:
<%= f.select( :state_user,User.states.keys.map {|state| [state.titleize,state] }) %> 如何创建允许我选择多个状态的范围? 例如,我想过滤所有非活动或暂停的用户. 谢谢 解决方法
不确定你是否还在寻找这样的东西,但这就是我找到的东西.
解 我能够使用以下方法实现这一点 scope :for_states,-> (*state_names) { where(state: states.values_at(*Array(state_names).flatten)) } * state_names参数将允许将任意数量的参数打包到state_names数组中. Array(state_names)确保如果传递一个参数,它将被视为一个数组.最后,flatten允许将单个数组作为参数传递.毕竟,splat(*)将此数组的所有元素解包为values_at方法的参数. 您可以按如下方式使用: > User.for_states:one_state 如果您不需要方法灵活,可以简化. 未来 根据Edge Rails Docs,这在Rails 5中应该更简单,你只需要做到 User.where(state: [:state_1,:state_2]) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |