I have an activeadmin resource which has a belongs_to :user relationship.
When I create a new Instance of the model in active admin, I want to associate the currently logged in user as the user who created the instance (pretty standard stuff I'd imagine).
So... I got it working with:
controller do def create @item = Item.new(params[:item]) @item.user = current_curator super end end
However ;) I'm just wondering how this works? I just hoped that assigning the @item variable the user and then calling super would work (and it does). I also started looking through the gem but couldn't see how it was actually working.
Any pointers would be great. I'm assuming this is something that InheritedResources gives you?
Thanks!
I ran into a similar situation where I didn't really need to completely override the create method. I really only wanted to inject properties before save, and only on create; very similar to your example. After reading through the ActiveAdmin source, I determined that I could use before_create
to do what I needed:
ActiveAdmin.register Product do before_create do |product| product.creator = current_user end end
Another option:
def create params[:item].merge!({ user_id: current_curator.id }) create! end
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With