首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查模型范围内是否有locale_restriction

检查模型范围内是否有locale_restriction
EN

Stack Overflow用户
提问于 2015-02-06 23:32:15
回答 1查看 17关注 0票数 0

考虑一个模型Post,它有一个titledescription和一个locale_restrictions字段。

区域设置限制字段指定应在哪些区域设置中显示post。它包含一个CSV值:en,de,be,nl

我想要做的是使用一个default_scope或一个命名的作用域只返回特定区域设置的模型实例。类似于(带有localized范围的):Post.localized.all。然后,这个范围查看当前的区域设置I18n.locale,并返回在其locale_restrictions CSV中包含该区域设置的帖子。

经过几种选择,我似乎无法做到这一点。我最接近的是一个SQL LIKE表达式:

代码语言:javascript
复制
default_scope -> { where("locale_restrictions LIKE (?)", "%#{I18n.locale.to_s}%") }

但是,如果同时存在:en:benl区域设置,这将失败,因为%en%将与:benl匹配。

显然,您无法在范围内访问self.locale_restrictionsself返回类而不是实例。我无法找到分割locale_restrictions并检查它们的方法。

使用作用域进行此操作的最佳方法是什么,或者是否有任何关于本地化数据库的最佳实践,而我忽略了这些实践?

我基本上是在寻找一种简单的方法来将我的控制器实例变量调整到特定的地区。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-07 00:16:34

您可以使用REGEXP,并在正则表达式中包含单词开头和字尾赏金,而不是使用LIKE。这应该能起作用:

代码语言:javascript
复制
default_scope -> { where("locale_restrictions REGEXP (?)", "[[:<:]]#{I18n.locale.to_s}[[:>:]]") }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28376633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档