您好,感谢您提前给予帮助。RoR:在购买的产品和用户之间建立关系
我想在保存订单时创建用户和产品(pdf)之间的关系。
class PDF
has_many :line_items
end
class LineItem
belongs_to :pdf
belongs_to :cart
end
class Cart
has_many :line_items
has_one :order
end
class Order
belongs_to :cart
end
在用户购买line_item时,我想通过用户和pdf之间的连接模型(pdf_relationships)创建关系。
我正试图在给定的购物车中找到每个PDF(由foreign_key line_item.pdf_id找到),并在用户和购物车中的每个pdf之间创建pdf_relationships。我将使用户的ID为所有者ID,并使pdf的ID为owned_id。
我的订单控制器看起来是这样的:
def create
@order = current_cart.build_order(params[:order])
@order.ip_address = request.remote_ip
if @order.save
if @order.purchase
render :action => "success"
else
render :action => "failure"
end
else
render :action => 'new'
end
end
什么我遇到的麻烦是:
class Order
belongs_to :cart
before_save :create_owner
***def create_owner
self.cart.line_items.each do |item|
pdf.find_by_item_pdf_id(:pdf_id)
current_user.pdf_relationships.build(:owned_id => pdf.id)
end
end***
end
这里是我的用户模型:
class User
has_many :line_items
has_many :pdf_relationships, foreign_key: :owner_id, :dependent => :destroy
has_many :pdfs, foreign_key: :user_id, dependent: :destroy
has_many :pdf_ownings, :through => :pdf_relationships, :source => :owned
def owning?(owned)
pdf_relationships.find_by_pdf_owned_id(owned)
end
def own!(owned)
pdf_relationships.create!(:owned_id => owned.id)
end
def unown!(owned)
pdf_relationships.find_by_pdf_owned_id(owned).destroy
end
我希望这已经够清楚了。我一直试图弄清楚这个问题,现在肯定是想成为一名新手。暗示性的读物也绝对受欢迎!
我想我一定是在正确的方向前进。我想,当我尝试通过遍历购物车中的每个line_item(cart.line_item.pdf_id.each ...)来查找pdf并查看每个line_item.pdf_id时,问题就出现了。一旦我得到这些ID,那么我可以创建PDF关系。总的来说,我需要采取每个pdf.id这是line_item.pdf_id并将其作为owned.id。 – Jches 2012-02-11 03:55:08
你还在收到错误?你能使用我的示例代码吗?如果不是,你的'User'模型是什么样的? – Brandan 2012-02-11 04:13:19
是的,我仍然有错误。我编辑了我的问题并添加了用户模型。我的代码def create_owner在订单模型中甚至远程更正? – Jches 2012-02-11 20:56:12