Похоже, вы хотели бы реализовать отношение «многие ко многим» между моделью «Пользователь» и «Продукт», при этом модель «Обзор» служит таблицей соединений, чтобы связать их с добавленной строкой комментариев. Это может быть достигнуто с помощью множества через Rails. Начните с чтения Руководства Rails по ассоциациям .
При настройке модели Review
добавьте внешние ключи для User
и Product
:
rails generate model review user_id:integer product_id:integer
И настройте свои ассоциации следующим образом:
class User < ActiveRecord::Base
has_many :reviews
has_many :products, through: :reviews
end
class Product < ActiveRecord::Base
has_many :reviews
has_many :users, through: :reviews
end
class Review < ActiveRecord::Base
# has comment string attribute
belongs_to :user
belongs_to :product
end
Это позволит вам совершать звонки, такие как:
user.products << Product.first
user.reviews.first.comment = 'My first comment!'
Вот как бы вы создали обзор:
@user = current_user
product = Product.find(params[:id])
@user.reviews.create(product: product)