J'ai un problème en essayant de sauvegarder dans une table intermédiaire. Je suis nouveau sur Rails et j'ai passé quelques heures sur ce sujet, mais je n'arrive pas à le faire fonctionner, peut-être que je fais tout le mal. Toute aide serait appréciée. =)Comment insérer des lignes dans une relation plusieurs-à-plusieurs
L'application est un magasin de livres simple, où un utilisateur connecté choisit des livres et ensuite créer une commande.
Cette erreur s'affiche:
NameError in OrderController#create
uninitialized constant Order::Orderlist
Ce sont mes modèles:
class Book < ActiveRecord::Base
has_many :orderlists
has_many :orders, :through => :orderlists
end
class Order < ActiveRecord::Base
belongs_to :user
has_many :orderlists
has_many :books, :through => :orderlists
end
class OrderList < ActiveRecord::Base
belongs_to :book
belongs_to :order
end
Ceci est mon contrôleur de commande:
class OrderController < ApplicationController
def add
if session[:user]
book = Book.find(:first, :conditions => ["id = #{params[:id]}"])
if book
session[:list].push(book)
end
redirect_to :controller => "book"
else
redirect_to :controller => "user"
end
end
def create
if session[:user]
@order = Order.new
if @order.save
session[:list].each do |b|
@order.orderlists.create(:book => b) # <-- here is my prob I cant make it work
end
end
end
redirect_to :controller => "book"
end
end
Thnx à l'avance!
Manuel
Il y a aussi 'has_and_belongs_to_many' dans Rails qui est ce qu'il vous ressemble vraiment ici. – x1a4
Cela dépend - si OrderList a une logique réelle, alors il est logique de le faire de cette façon. J'ai moi-même un 'Game <-> Player <-> Configuration de l'utilisateur qui fonctionne exactement comme ça. – Chowlett