0

注文時に顧客がログイン/登録し、注文がインデックスに追加されるように、注文システムを作成しようとしています。私は2つのコントローラーとそれぞれのモデル/ビューなどをすべて持っています - 注文と顧客と呼ばれます。customer_id が発注時に注文に追加されるようにメソッドを追加する必要があると想定しています。その後、その特定の顧客のインデックスにその ID を持つすべての注文を表示できます。つまり、顧客は自分の注文のみを表示できます。 .

それはおそらく非常に簡単な質問です、すみません! しかし、私はレールに不慣れで、これを開始する方法がわかりません。誰かが私がこれを行う方法を提案できますか?

編集:

みんなの助けに感謝します!その顧客の注文のみを表示する顧客インデックスを取得するにはどうすればよいですか? ログイン時にcustomer_idをセッションに保存し、それを注文に入れ、インデックスページでそのIDを持つすべての注文を見つけますか? ログイン時に ID をセッションに取得する方法はわかっていると思いますが、これを顧客インデックス ビューに抽出する方法がわかりません。どんな助けでも大歓迎です!

4

2 に答える 2

0

customer_idを持つように注文テーブルを作成し、顧客が注文するときにそのIDを入力する場合、注文の顧客ビューは常に注文にスコープされている必要があります。次のように、顧客ユーザーと管理者ユーザー(おそらくあなた?)を区別する必要があります。

class customer
  has_many :orders
end

class order
  belongs_to :customer
end

class OrdersController

  def index
    # determine the current customer (or admin), then
    if current_user.isAdmin?
      @orders = Order.all
    else
      @orders = current_user.orders
    end
  end
end
于 2012-06-12T11:40:29.893 に答える
0

@railsdog は正しいですが、ここにパズルの別の部分があります (最初に顧客の ID を順番に取得する方法):

class OrdersController
  def create
    @order = Order.new(params[:order])
    @order.customer_id = current_user.id
    # ...
  end
  #...
end

ここでは、フォームからではなく、コントローラーで customer_id を設定する方法に注意してください。これは、非表示のフォーム フィールドでもクライアントが変更できるため、サーバー側で確認せずに変更すると、攻撃者が他の顧客に注文を送信する可能性があります。

于 2012-06-12T11:47:59.970 に答える