こんにちは、ありがとうございました。RoR:購入した製品とユーザーの関係を作成する
ご注文を保存する際に、ユーザーと製品(pdf)との関係を作成したいと考えています。 LINE_ITEMを購入したユーザの際
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
、私は、ユーザーと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
はIこれが十分明確であることを望みます。私はいつかこれを理解しようとしてきましたが、過去を初心者にしようと間違いなく努力しました。示唆的な読みは間違いなく歓迎です!
私は正しい方向に進んでいたに違いないと思った。私は、カート内の各line_item(cart.line_item.pdf_id.each ...)を繰り返し、各line_item.pdf_idを見てpdfを見つけようとするときに問題が発生すると思います。これらのIDを取得すると、pdf関係を作成できます。全体として、私はline_item.pdf_idである各pdf.idを所持し、それをowned.idとして配置する必要があります。 – Jches
まだエラーが発生していますか?私のサンプルコードを使用できましたか?そうでなければ、あなたの 'User'モデルはどのように見えますか? – Brandan
いや私はまだエラーが発生しています。私は自分の質問を編集し、ユーザーモデルを追加しました。注文モデルのdef create_ownerのための私のコードは、リモートでも正しいですか? – Jches