我有以下模型类......
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
的所有Tag
?
答案 0 :(得分:3)
.where
返回一个ActiveRecord :: Relation实例,而不是单个对象。抓住.first
抓住(大概)唯一记录的回复:
t = Tag.where(name: "foo").first
@images = t.images