63

私はbelongs_to:user関係を持つactiveadminリソースを持っています。

アクティブな管理者でモデルの新しいインスタンスを作成するとき、現在ログインしているユーザーをインスタンスを作成したユーザーとして関連付けたいと思います(私が想像するかなり標準的なもの)。

だから...私はそれを使って動作させました:

controller do
  def create
    @item = Item.new(params[:item])
    @item.user = current_curator
    super
  end 
end 

しかし;)私はこれがどのように機能するのか疑問に思っていますか?@item変数にユーザーを割り当ててから、superを呼び出すことが機能することを期待していました(実際に機能します)。私も宝石を調べ始めましたが、実際にどのように機能しているかがわかりませんでした。

どんなポインタも素晴らしいでしょう。これは、ExplicitResourcesが提供するものだと思いますか?

ありがとう!

4

4 に答える 4

126

createメソッドを完全にオーバーライドする必要がないという同様の状況に遭遇しました。私は実際には、保存する前に、作成時にのみプロパティを挿入したかったのです。あなたの例と非常によく似ています。ActiveAdminソースを読んだ後、before_create必要なことを実行するために使用できると判断しました。

ActiveAdmin.register Product do
  before_create do |product|
    product.creator = current_user
  end
end
于 2014-04-07T18:33:20.510 に答える
14

別のオプション:

def create
  params[:item].merge!({ user_id: current_curator.id })
  create!
end
于 2013-10-09T16:13:44.020 に答える
2

あなたは正しいアクティブな管理者の使用であり、ページInheritedResourcesの最後に表示される他のすべてのツールです。

于 2012-12-03T04:10:58.307 に答える
-1

AAソースコードによると、これは私のために働いた:

controller do
  def call_before_create(offer)
  end
end
于 2014-08-17T01:47:43.277 に答える