Hi there,
I’m learning the active model, and I’m trying to retrieve an association.
My models are:
class Composition < ActiveRecord::Base has_and_belongs_to_many :materials belongs_to :product end
class Material < ActiveRecord::Base has_and_belongs_to_many :compositions has_many :products, through: :composition end
class Product < ActiveRecord::Base has_many :compositions has_many :materials, through: :composition accepts_nested_attributes_for :materials end
``
My schema is:
create_table “compositions”, force: :cascade do |t| t.integer “product_id” t.integer “material_id” t.integer “material_quantity” t.datetime “created_at”, null: false t.datetime “updated_at”, null: false end
create_table “materials”, force: :cascade do |t| t.string “name” t.decimal “unit_cost” t.string “unit_measure” t.datetime “created_at”, null: false t.datetime “updated_at”, null: false end
create_table “products”, force: :cascade do |t| t.string “name” t.string “description” t.datetime “created_at”, null: false t.datetime “updated_at”, null: false end
``
On my CompositionsController index method, I would like to retrieve all raw materials for a product id.
What i have now is:
def index @product = Product.find(params[:product_id]) @compositions = @product.compositions end
``
How do I retrieve materials attributes from @compositions?
When I try to use @compositions = @product.compositions.includes(:materials)
``
It gives me the error:
PG::UndefinedTable: ERROR: relation "compositions_materials" does not exist
LINE 5: WHERE a.attrelid = '"compositions_materials"'...
^
: SELECT a.attname, format_type(a.atttypid, a.atttypmod),
pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
FROM pg_attribute a LEFT JOIN pg_attrdef d
ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = '"compositions_materials"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
Any hints?
Thanks in advance,
Leandro