0

我有以下模型类...

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;

我也尝试在语句.includes(:images)之前添加.where,但这也不起作用。那么,我怎样才能获得Images属于 a 的所有内容Tag

4

1 回答 1

3

.where返回一个 ActiveRecord::Relation 实例,而不是单个对象。附加一个.first以获取(大概)返回的唯一记录:

t = Tag.where(name: "foo").first
@images = t.images
于 2012-10-31T23:02:24.117 回答