我遇到试图保存到中间表的问题。我是Rails新手,我已经花了几个小时的时间,但不能使它工作,也许我做错了整个事情。任何帮助将不胜感激。 =)如何在多对多关系中插入行
该应用程序是一个简单的书店,登录用户选择书籍,然后创建订单。显示
此错误:
NameError in OrderController#create
uninitialized constant Order::Orderlist
这是我的模型:
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
这是我的命令控制器:
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提前!
曼努埃尔
还有'has_and_belongs_to_many' Rails中是什么样子你真的想在这里。 – x1a4 2010-05-28 17:07:26
这取决于 - 如果OrderList具有实际的逻辑,那么这样做是有意义的。我自己有一个'游戏<->播放器<->用户设置,完全是这样的。 – Chowlett 2010-06-01 08:12:04