我有一个AudioFile has_many照片。一张照片有一个属性“主”(分贝为0或1)什么是这样做的惯用ruby方式:我想在AudioFile上有一个方法,它返回主照片的ID,即照片主属性设置为true。迭代集合并返回匹配元素
1
A
回答
1
通常,最佳做法是在您的Photo
模型中设置named_scope
。
class Photo < ActiveRecord::Base
named_scope :primary, :conditions => {:primary => true}
end
然后,您可以调用您的照片关联的主要范围。例如
@audio_file.photos.primary.first
你也可以用辅助方法包装这个。
def primary_photo
photos.primary.first
end
查看http://api.rubyonrails.org/classes/ActiveRecord/NamedScope/ClassMethods.html了解更多详细信息和示例或谷歌named_scope。
1
我不确定这是不是你的意思,但Enumerable#Select会给你所有的项目从一个可匹配的案件(在块中给出)的可枚举对象。
相关问题
- 1. 在jQuery中找到集合中元素的匹配值,并返回该元素
- 2. 迭代RDD并更新可变集合返回空集合
- 3. 在匹配元素上合并列表
- 4. 如何返回两个单独集合中匹配元素的总和
- 5. jQuery:返回所有匹配的元素不仅一个匹配元素
- 6. 将匹配元素属性合并到单个元素中
- 7. 在元组中按元素比较返回集的集合 - python
- 8. 配置元素集合节
- 9. 基于集合元素匹配,或空集
- 10. 如何迭代JS中的散列并返回所有匹配结果?
- 11. Java迭代集合
- 12. JQuery - 集合迭代
- 13. backbone.js迭代集合
- 14. vba - 迭代集合
- 15. 多个集合的并行迭代
- 16. 并行迭代几个集合
- 17. Java:在迭代过程中向集合添加元素
- 18. 迭代javascript中的对象集合,并从该函数返回true
- 19. 返回一个Backbone集合并迭代 - 而不是一个视图
- 20. 集合迭代器不返回每个值
- 21. async.js:迭代集合,直到一个返回true
- 22. Laravel关系集合迭代返回布尔
- 23. 如果两个单元格匹配,则将第三个“匹配”单元格的返回值垂直合并
- 24. 匹配元素
- 25. 一个通用适配器迭代项目集合集合
- 26. 通过矩阵元素进行迭代并在Smalltalk中返回true时停止
- 27. 迭代hashmaps并访问它的元素
- 28. 将迭代器返回到STL容器中的元素
- 29. 如何返回列表中元素的列表迭代器
- 30. 获取匹配Xpath计数不会返回匹配元素的数量
所以我可以写 def primary_photo self.photos.select {| element | element.primary ='true'} end – rordude 2009-11-15 23:55:05