2012-10-31 41 views
0

我有以下的模型類...NoMethodError使用。凡在(預先抓取)

class Image < ActiveRecord::Base 
    attr_accessible :description, :title 
    has_many :imageTags 
    has_many :tags, :through => :imageTags 
end 

class Tag < ActiveRecord::Base 
    attr_accessible :name 
    has_many :imageTags 
    has_many :images, :through => :imageTags 
end 

class ImageTag < ActiveRecord::Base 
    attr_accessible :position 
    belongs_to :image 
    belongs_to :tag 
end 

當我使用find用於獲取標籤與ID 1

t = Tag.find(1); 
@images = t.images; 

但是,當我也是這樣做的where,我得到一個NoMethodError,描述undefined method 'images'

t = Tag.where(:name => "foo"); 
@images = t.images; 

我也嘗試在.where聲明之前添加.includes(:images),但這不起作用。 那麼,我怎樣才能得到屬於Tag的所有Images

回答

3

.where返回一個ActiveRecord :: Relation實例,而不是一個單獨的對象。大頭釘.first搶(大概)唯一的記錄返回:

t = Tag.where(name: "foo").first 
@images = t.images 
+0

aaah!很有道理......謝謝! –