Belongs_to:user関係を持つactiveadminリソースがあります。
アクティブな管理者でモデルの新しいインスタンスを作成するとき、現在ログインしているユーザーを、インスタンスを作成したユーザー(私が想像するかなり標準的なもの)として関連付けたいと思います。
だから...私はそれを動作させました:
controller do
def create
@item = Item.new(params[:item])
@item.user = current_curator
super
end
end
しかし;)私はこれがどのように機能するのか疑問に思っていますか? @item変数をユーザーに割り当ててからsuperを呼び出すことでうまくいくことを願っています(実際にそうします)。私も宝石を調べ始めましたが、実際にどのように機能しているかを見ることができませんでした。
どんなポインタも素晴らしいでしょう。これはInheritedResourcesが提供するものだと思いますか?
ありがとう!
Createメソッドを完全にオーバーライドする必要がほとんどない、同様の状況に遭遇しました。保存する前に、作成時にのみプロパティを挿入したかったのです。あなたの例に非常に似ています。 ActiveAdminソースを読んだ後、私はbefore_create
を使用して必要なことを実行できると判断しました。
ActiveAdmin.register Product do
before_create do |product|
product.creator = current_user
end
end
別のオプション:
def create
params[:item].merge!({ user_id: current_curator.id })
create!
end
あなたはまさにアクティブな管理者ですInheritedResources
、 page の終わりに見ることができる他のすべてのツール。
AA ソースコード に従って、これは私のために働いた:
controller do
def call_before_create(offer)
end
end