Rails: activeadmin overriding создает действие
У меня есть ресурс activeadmin, который имеет отношение own_to: user.
Когда я создаю новый экземпляр модели в активном админе, я хочу связать зарегистрированного пользователя в качестве пользователя, создавшего экземпляр (довольно стандартный материал, который я бы себе представил).
Итак... Я получил его с помощью:
controller do
def create
@item = Item.new(params[:item])
@item.user = current_curator
super
end
end
Однако;) Мне просто интересно, как это работает? Я просто надеялся, что назначение переменной @item пользователем, а затем вызов супер будет работать (и это произойдет). Я также начал изучать драгоценный камень, но не мог понять, как он работает.
Любые указатели были бы замечательными. Я предполагаю, что это то, что дает вам InheritedResources?
Спасибо!
Ответы
Ответ 1
Я столкнулся с аналогичной ситуацией, когда мне действительно не нужно полностью переопределять метод create. Я действительно хотел только добавить свойства перед сохранением, и только при создании; очень похоже на ваш пример. После прочтения источника ActiveAdmin я решил, что могу использовать before_create
для выполнения необходимых действий:
ActiveAdmin.register Product do
before_create do |product|
product.creator = current_user
end
end
Ответ 2
Другая опция:
def create
params[:item].merge!({ user_id: current_curator.id })
create!
end
Ответ 3
Вы правильно используете admin InheritedResources
, все остальные инструменты вы можете увидеть в конце страница.
Ответ 4
В соответствии с исходным кодом AA это сработало для меня:
controller do
def call_before_create(offer)
end
end