2013-08-08 16 views
5

Ben aktif kaydının 4 (eski bir veritabanı haritalama)ActiveRecord :: Dernekleri aracılığıyla Döngü :: CollectionProxy her

class Page < ActiveRecord::Base 
    self.table_name = "page" 
    self.primary_key = "page_id" 
    has_many :content, foreign_key: 'content_page_id', class_name: 'PageContent' 
end 

class PageContent < ActiveRecord::Base 
    self.table_name = "page_content" 
    self.primary_key = "content_id" 
    belongs_to :pages, foreign_key: 'page_id', class_name: 'Page' 
end 

aşağıdaki çalışıyor ile kurmak aşağıdaki modeller ....

page = Page.first 
page.content.first.content_id 
=> 17 
page.content.second.content_id 
=> 18 
hepsi çok

page.content.each do |item| 
    item.content_id 
end 

gibi öğeler ama sadece whol döndürür olsa

ancak ben döngü edebilmek istiyorum E koleksiyonu tek tek alan

=> [#<PageContent content_id: 17, content_text: 'hello', content_order: 1>, #<PageContent content_id: 18, content_text: 'world', content_order: 2>] 

bir ActiveRecord :: Dernekleri :: CollectionProxy herhangi bir fikir var

page.content.class 
=> ActiveRecord::Associations::CollectionProxy::ActiveRecord_Associations_CollectionProxy_PageContent 

kimse bir şey yazıyorum?

şerefe

Muhtemelen yerine map kullanmak istiyorum

cevap

14

:

page.content.map do |item| 
    item.content_id 
end 

map (aka collect) dizi üyeleri üzerinde onu sormak ne olursa olsun kod bir dizi ve kaçak yinelemenize edecek bir bir tarafından. Bu yöntem çağrıları için dönüş değerlerini içeren yeni bir dizi döndürecektir.

+1

Neden page.content.each çalışmıyor? – MSC

+1

@MSC Bu durumda çalışmayacaktır çünkü OP, aramanın sonuçlarını bloğun içine döndürmek ister. Her biri bunu yapmazdı. –

İlgili konular