首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用调用结果的调用

调用调用结果的调用
EN

Stack Overflow用户
提问于 2011-02-12 21:28:50
回答 1查看 67关注 0票数 0

使用一个框架,我需要2个ActiveRecord作用域:

代码语言:javascript
复制
scope :tagged_with, lambda { |tag| {:conditions => [" tags like ? ",  "% #{tag} %"] } }
scope :tagged_with_any, lambda { |tag_array | [HERE NEW IMPLEMENTATION] }

我希望第二个作用域基于第一个作用域。如果你要硬编码,你会做一个两个元素的数组:

代码语言:javascript
复制
lambda { | tag_array | tagged_with(tag_array[0]).tagged_with(tag_array[1]) }

这是可行的,但是我如何做泛型呢?

代码语言:javascript
复制
lambda { | tag_array | tags.each { |t| tagged_with(t) } }

显然做不到这项工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-12 21:38:58

这可以接受吗?

代码语言:javascript
复制
named_scope :tagged_with_all, lambda { |tag_array| tag_array.inject(self, :tagged_with) }

edit重命名为tagged_with_all,因为它确实是这样做的。对于tagged_with_any,Vanilla命名作用域不实现OR连接;从作用域“手动”连接ORs条件是可行的,但有点麻烦。请注意,您有像Arel或Metawhere这样的库。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4978291

复制
相关文章

相似问题

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