我曾尝试从控制器和主动管理覆盖控制器执行此操作,但我无法使其正常工作。
用户创建网站。 current_user具有id属性 网站有一个user_id属性
因此,当我创建一个新网站时,我想将current_user.id添加到website.user_id中。我不能。
有人知道吗?
现在我需要新的/创建操作,但我也可能需要在编辑/更新操作上使用它。
答案 0 :(得分:12)
这似乎对我有用:
ActiveAdmin.register Website do
controller do
# Do some custom stuff on GET /admin/websites/*/edit
def edit
super do |format|
# Do what you want here ...
@website.user = current_user
end
end
end
end
您应该能够以相同的方式覆盖其他控制器操作。
答案 1 :(得分:11)
ActiveAdmin.register Model do
# also look in to before_create if hidden on form
before_build do |record|
record.user = current_user
end
end
请参阅https://github.com/activeadmin/activeadmin/blob/master/lib/active_admin/resource_dsl.rb#L156
答案 2 :(得分:4)
您需要向控制器添加“新”方法。 'new'方法创建一个空的网站对象,该对象将传递给表单。默认的'new'方法只是创建一个空的@website对象。您的“新”方法应该创建空对象,然后将user的值初始化为当前用户:
ActiveAdmin.register Website do
controller do
# Custom new method
def new
@website = Website.new
@website.user = current_user
#set any other values you might want to initialize
end
end