Это мой первый набег в объединенные таблицы и отношения «многие ко многим», и я также относительно новичок в Ruby / Rails.
Это прямое продолжение предыдущего вопроса , где я построил соответствующие связанные таблицы / модели.Но для ясности я переопределю макет здесь ...
Мои модели:
order.rb
class Order < ApplicationRecord
belongs_to :user
has_many :quantities
has_many :meals, through: :quantities
end
food.rb
class Meal < ApplicationRecord
has_many :quantities
has_many :orders, through: :quantities
end
amount.rb
class Quantity < ApplicationRecord
belongs_to :order
belongs_to :meal
accepts_nested_attributes_for :quantities
end
user.rb
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
has_many :orders
after_create :add_order
def add_order
self.create_order
end
Таким образом, у каждого пользователя есть 1 заказ, и они могут обновлять количество каждого приема пищи в своем заказе.Мне нужно отобразить все это на «домашней странице» (я сделал домашний контроллер), для которой мне дали эту итерацию в качестве ссылки:
order.quantities.each do |record|
record.meal.name # for name of associated meal
record.quantity # for quantity of meal
end
Но проблема, с которой я сейчас сталкиваюсь, связана с включением этого соединенияв домашний контроллер, чтобы страница могла отображать информацию.
В отношениях 1-к-1 я недооцениваю, как перенести информацию о соответствующем пользователе на страницу, но в этом «многие ко многим»отношения, логика теряется на мне, так как каждый раз, когда я вношу информацию на контроллере, я получаю неопределенную переменную.
Я даже не хочу показывать свою попытку, потому что я думаю, что концепция этого типаотношения потеряны на мне.(Метод цепочки, использованный в примере итерации, имеет смысл для меня, если посмотреть на него, но тогда как с этим справиться в контроллере, а не подсказка)
Если кто-то может попытаться объяснить, какая концепция ускользает от менятак что я могу лучше понять отношения «многие ко многим», я чувствую, что это могло бы прояснить большую путаницу, связанную с Ruby, которая у меня, по-видимому, тоже.