基于属性大小的查询
Query based on attribute's size
我想知道是否可以在 Rails 5 中对给定长度的属性进行 where
查询?
假设我在模型 Post
上有一个名为 tags
的序列化数组属性,我想找到该属性中包含超过 3 个项目的所有 posts
。
我会设想它看起来像这样:
Post.where('tags.size > ?', 3)
如果 ActiveRecord 中有针对此问题的解决方案,那就太好了。
首先,@mu的评论太短了,答案here,当你需要查询那个属性时不要使用序列化。
再次参考那个答案,你可以这样试试,
Post.all.select { |post| post.tags.length > 3 }
P.S。未经测试。即使有效,似乎也很低效。
如果您打算打开并创建一个名为 Tag
的关联模型(当然更好),您可以执行类似
的操作
Post.joins(:tags).having('count(tags.id) > 3').group('posts.id')
我想知道是否可以在 Rails 5 中对给定长度的属性进行 where
查询?
假设我在模型 Post
上有一个名为 tags
的序列化数组属性,我想找到该属性中包含超过 3 个项目的所有 posts
。
我会设想它看起来像这样:
Post.where('tags.size > ?', 3)
如果 ActiveRecord 中有针对此问题的解决方案,那就太好了。
首先,@mu的评论太短了,答案here,当你需要查询那个属性时不要使用序列化。 再次参考那个答案,你可以这样试试,
Post.all.select { |post| post.tags.length > 3 }
P.S。未经测试。即使有效,似乎也很低效。
如果您打算打开并创建一个名为 Tag
的关联模型(当然更好),您可以执行类似
Post.joins(:tags).having('count(tags.id) > 3').group('posts.id')