我有一张有很多照片的AudioFile。照片有一个属性“primary”(db中为0或1)什么是惯用的ruby方式做这样的事情:我想在AudioFile上有一个方法,它返回主照片的id,即有照片的照片主要属性设置为true。
答案 0 :(得分:1)
我不确定这是不是你的意思,但是Enumerable#Select会给你一个与一个案例匹配的可枚举对象中的所有项目(在一个块中给出)。
答案 1 :(得分:1)
通常,最佳做法是在named_scope
模型中设置Photo
。
class Photo < ActiveRecord::Base
named_scope :primary, :conditions => {:primary => true}
end
然后,您可以调用照片关联中的主要范围。 e.g。
@audio_file.photos.primary.first
您也可以将其包装在辅助方法中。
def primary_photo
photos.primary.first
end
有关详细信息和示例,请参阅http://api.rubyonrails.org/classes/ActiveRecord/NamedScope/ClassMethods.html或google named_scope。