1

私は、billing_id を持つ User モデルを持っています。ユーザーモデルのbilling_id列に保存したい請求IDを返す支払いゲートウェイでトランザクションを実行する注文モデルがあります。MVC アーキテクチャの基本が混同されていると思います。

私は、UsersController と OrdersController がそれぞれのテーブルのデータを更新するという印象を受けています。請求IDなどのOrdersControllerから何かが返された場合、その請求IDをUserモデルのbilling_id列に保存する方法は他にないということですか? これが非常に初歩的なものである場合は、ありがとうございます。:)

また、可能な解決策は、ApplicationsControllerを介してUsersControllerに戻り値を渡し、Userテーブルに保存することであると考えました。これは可能ですか?

4

1 に答える 1

1

ユーザーは複数の注文を持つことができるため、ユーザー注文テーブルには user_id のインスタンスが必要です。

これを行うには、移行を作成します。

rails g migration add_user_id_to_orders order_id:integer
rake db:migrate

モデルは次のようになります。

class User < ActiveRecord::Base
  has_many :orders
end

class Order < ActiveRecord::Base
  belongs_to :user
end

2 つの間のリンク (order_id) が必要です。そうしないと、お互いを認識できません。これは外部キーと呼ばれます。

このように設定すると、次のようにしてユーザーを取得できます。

User.find(1).orders

また、次のようにして、注文からユーザー情報を見つけることができます。

Orders.find(1).user

これが役立つことを願っています。

編集:

Orders.find(ORDER_ID).user.update_attributes(:billing_id => BILLING_ID)
于 2011-04-07T20:49:42.093 に答える