2009-11-15 68 views
1

我有一個AudioFile has_many照片。一張照片有一個屬性「主」(分貝爲0或1)什麼是這樣做的慣用ruby方式:我想在AudioFile上有一個方法,它返回主照片的ID,即照片主屬性設置爲true。迭代集合並返回匹配元素

回答

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

所以我可以寫 def primary_photo self.photos.select {| element | element.primary ='true'} end – rordude 2009-11-15 23:55:05