Sql Rails 3 HABTM按记录查找关联的模型属性

Sql Rails 3 HABTM按记录查找关联的模型属性,sql,ruby-on-rails,ruby-on-rails-3,has-and-belongs-to-many,Sql,Ruby On Rails,Ruby On Rails 3,Has And Belongs To Many,我认为这是非常基本的,但我对SQL很糟糕,所以我不知道如何做 我有两个模型之间的标准HABTM关系,土地使用和照片。所以我有一个land\u uses\u photos连接表,每个模型都有标准宏,如: Photo has_and_belongs_to_many :land_uses 土地使用表有:ID和名称(字符串) 我想找到土地使用名称为‘foo’、‘bar’或‘baz’的照片。我该怎么做 我看了看,试着: Photo.includes(:land_uses).where('land_use

我认为这是非常基本的,但我对SQL很糟糕,所以我不知道如何做

我有两个模型之间的标准HABTM关系,土地使用和照片。所以我有一个land\u uses\u photos连接表,每个模型都有标准宏,如:

Photo
has_and_belongs_to_many :land_uses
土地使用表有:ID和名称(字符串)

我想找到土地使用名称为‘foo’、‘bar’或‘baz’的照片。我该怎么做

我看了看,试着:

Photo.includes(:land_uses).where('land_use.id'=>[6,7])
。。。但这给了我:

ActiveRecord::StatementInvalid: No attribute named `id` exists for table `land_use`
这是假的,以下是LandUse和join表的schema.rb:

create_table "land_uses", :force => true do |t|
  t.string   "name"
  t.datetime "created_at"
  t.datetime "updated_at"
  t.integer  "display_order"
end

create_table "land_uses_photos", :id => false, :force => true do |t|
  t.integer "land_use_id"
  t.integer "photo_id"
end
那么,我怎样才能找到这样的答案呢?让它变成一个问题而不是两个问题,我怎么能用“And”条件而不是“or”条件来找到呢


谢谢

您生成了一个“id”错误,因为表名是:
land\u uses
而不是
land\u uses

哦,好的,这是表名而不是模型名。。。仍在学习,但这有帮助,谢谢!您知道
联接
包含
之间的区别是什么吗?当您想要快速加载关联数据时,请使用
包含
。当您想要避免N+1问题时,这非常有用。在其他地方使用
连接
,因为它可以生成更简单、更快的sql。
Photo.joins(:land_uses).where('land_uses.name' => ['foo', 'bar', 'baz'])