creo que esto es muy básico, pero estoy horrible, con SQL así que no tengo idea de cómo hacerlo ...Rails 3 HABTM encontró por registro asociado atributo model
que tienen una relación HABTM estándar entre dos modelos , LandUse y Foto. Así que tengo una land_uses_photos tabla de unión, y cada modelo tiene la macro estándar, como:
Photo
has_and_belongs_to_many :land_uses
La tabla de uso de la tierra tiene: Identificación y Nombre (cadena).
Quiero encontrar fotos donde Nombre del uso del suelo = 'foo', 'bar' o 'baz'. ¿Cómo puedo hacer eso?
Miré a this question y juzgados:
Photo.includes(:land_uses).where('land_use.id'=>[6,7])
... pero eso me dio:
ActiveRecord::StatementInvalid: No attribute named `id` exists for table `land_use`
Eso es falso, aquí está el schema.rb tanto para el uso del suelo y de la tabla de unión:
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
Entonces, ¿cómo hago este tipo de búsqueda? Y para hacer solo una pregunta en lugar de dos, ¿cómo podría encontrar con una condición "y" en lugar de solo una condición "o"?
Gracias!
Esto lo hizo. ¡Gracias! – Andrew
¿Sabes cuál es la diferencia entre 'join' y' includes'? – Andrew
Use 'includes' cuando desee cargar los datos de la asociación. Esto es útil cuando quiere evitar el problema N + 1. Use 'join' en cualquier otro lugar, ya que genera un sql mucho más simple y rápido. –