1

私はRailsの初心者で、モデルを保存する前に保護された属性を設定するための良い解決策を考えていましたが、それを行う適切な方法を見つけることができません.

会社に属するユーザーがいて、これらの会社は多くのクライアントを持つことができるとしましょう。新しいクライアントを保存する前に、その company_id を設定し、セッションに保存されている current_user の company_id から取得します (私は Devise を使用しています)。

before_create などのモデル コールバックを使用することを考えていましたが、実行中に current_user がないため、Rspec モデル テストが失敗する可能性があることに気付きました...

自動的に設定する必要があるこのパラメーターを設定するベスト プラクティスはありますか?

前もって感謝します!

4

1 に答える 1

2

コントローラーにセットするだけ。

def create
  @new_user = User.new(params[:user])
  @new_user.company = current_user.company # <-- here
  if @new_user.save
    # ...
  else
    # ...
  end
end

モデルのコールバックで設定すると、いくつかの欠点があります。

  • それはあなたのテストを壊します
  • どこでも必要というわけではないかもしれません - 管理フロントエンドを作成することを想像してみてください。
于 2012-07-10T08:01:06.943 に答える