我认为这是非常基本的,但我对SQL很可怕,所以我不知道怎么做......
我在两个模型LandUse和Photo之间有一个标准的HABTM关系。所以我有一个land_uses_photos连接表,每个模型都有标准宏,如:
Photo
has_and_belongs_to_many :land_uses
土地使用表有:ID和名称(字符串)。
我想找到Land Use Name ='foo','bar'或'baz'的照片。我该怎么做?
我看了this question并尝试了:
Photo.includes(:land_uses).where('land_use.id'=>[6,7])
......但那给了我:
ActiveRecord::StatementInvalid: No attribute named `id` exists for table `land_use`
这是假的,这是LandUse和连接表的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
那么,我该怎么做这种发现?并且只使一个问题而不是两个问题,我怎么能找到一个“和”条件而不是一个“或”条件?
谢谢!
答案 0 :(得分:7)
Photo.joins(:land_uses).where('land_uses.name' => ['foo', 'bar', 'baz'])
答案 1 :(得分:1)
land_uses
而非land_use
,因此您生成'id'错误