Хорошо, вот сделка.У меня есть две таблицы и таблица соединений, так как это отношение многих ко многим.У меня есть заказ, и у заказа может быть много продуктов.Очевидно, что все идет иначе, так как товары могут быть на много заказов.У меня есть следующие классы:
class Order < ActiveRecord::Base
has_many :orders_products
has_many :products, :through => :orders_products
end
class OrderProduct < ActiveRecord::Base
belongs_to :order
belongs_to :product
end
class Product < ActiveRecord::Base
has_many :orders_products
has_many :orders, :through => :orders_products
end
Я получаю страницу для отображения, и я могу ввести материал, и когда я иду взаимодействовать с продуктами в сохраненном заказе через @order.products
Я получаю следующую ошибку:
SQLite3::SQLException: no such table: order_products: SELECT "products".* FROM "products" INNER JOIN "order_products" ON "products".id = "order_products".product_id WHERE (("order_products".order_id = 1))
Моя таблица соединения называется orders_products
, но, как вы можете видеть, она пытается присоединиться через order_products
.Мои ограниченные знания соглашений об именах Rails говорят мне, что orders_products
- это правильный способ назвать его, а затем назвать мою модель как OrderProduct
.Я действительно прижимаю голову к этой стене.
РЕДАКТИРОВАТЬ: я вижу, что, хотя он сохранил мой заказ, и я выбрал несколько флажков, он не сохранил никаких значений в таблице orders_products
,предположительно по той же причине, что и сейчас.