que estoy tratando de hacer lo siguiente en un proyecto Ruby on Rails:has_many: a través de una asociación has_and_belongs_to_many
class FoodItem < ActiveRecord::Base
has_and_belongs_to_many :food_categories
has_many :places, :through => :food_categories
end
class FoodCategory < ActiveRecord::Base
has_and_belongs_to_many :food_items
belongs_to :place
end
class Place < ActiveRecord::Base
has_many :food_categories
has_many :food_items, :through => :food_category
end
Pero llamando al método de instancia some_food_item.places
me da el siguiente error:
ActiveRecord::StatementInvalid: PGError: ERROR: column
food_categories.food_item_id does not exist
LINE 1: ...laces".id = "food_categories".place_id WHERE (("food_cate...
: SELECT "places".* FROM "places" INNER JOIN "food_categories" ON "places".id = "food_categories".place_id WHERE (("food_categories".food_item_id = 1))
Qué tiene perfecto sentido: debido a las HABTM en FoodItem y FoodCategory tengo la tabla de asignación llamada food_categories_food_items
.
¿Qué debo hacer para obtener some_food_item.places
para buscar correctamente los lugares a través de la tabla de asignación en lugar de buscar food_item_id
en la tabla food_categories
?
¡Ciertamente ayuda! Gracias a ambos por la solución y también por el aviso de HABTM. ¡Estoy seguro de que este no será el único lugar donde aplicaré esta solución! –