我覺得這是非常基本的,但我很可怕與SQL所以我不知道該怎麼辦呢?的Rails 3 HABTM通過記錄相關聯的模型屬性找到
我有兩個型號之間的標準HABTM關係,LandUse和照片。所以我有一個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`
那是假的,這裏有兩個對的土地利用和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
那麼,我該如何做這種查找?爲了讓它只有一個問題而不是兩個,我怎麼能找到一個「和」條件而不是隻有一個「或」條件?
謝謝!
這做到了。謝謝! – Andrew 2011-04-05 17:16:31
你知道'joins'和'includes'之間的區別是什麼嗎? – Andrew 2011-04-05 17:17:44
當您想要加載關聯數據時,請使用'includes'。當你想避免N + 1問題時,這很有用。在其他地方使用'joins',因爲它會生成更簡單,更快速的sql。 – 2011-04-05 17:25:38