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、ID1のタグを取得するために使用する場合

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

しかし、私が同じことをすると、説明付きのがwhere得られます:NoMethodErrorundefined method 'images'

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

.includes(:images)ステートメントの前に追加しようとしまし.whereたが、それも機能しません。では、どうすればすべてのものを取得できImagesますTagか?

4

1 に答える 1

3

.where単一のオブジェクトではなく、ActiveRecord::Relation インスタンスを返します。.first(おそらく) 返された唯一のレコードを取得するには、 a を追加します。

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