我试图从控制器和活动的管理员覆盖控制器中做到这一点,但我无法让它工作。
用户创建网站。current_user 有一个 id 属性网站有一个 user_id 属性
因此,当我创建一个新网站时,我想将 current_user.id 添加到 website.user_id 中。我不能。
有人知道怎么做吗?
现在我在新/创建操作中需要它,但我可能在编辑/更新操作中也需要它。
我试图从控制器和活动的管理员覆盖控制器中做到这一点,但我无法让它工作。
用户创建网站。current_user 有一个 id 属性网站有一个 user_id 属性
因此,当我创建一个新网站时,我想将 current_user.id 添加到 website.user_id 中。我不能。
有人知道怎么做吗?
现在我在新/创建操作中需要它,但我可能在编辑/更新操作中也需要它。
这似乎对我有用:
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
您应该能够以相同的方式覆盖其他控制器操作。
ActiveAdmin.register Model do
# also look in to before_create if hidden on form
before_build do |record|
record.user = current_user
end
end
See https://github.com/activeadmin/activeadmin/blob/master/lib/active_admin/resource_dsl.rb#L156
您需要向控制器添加一个“新”方法。'new' 方法创建一个空的网站对象,该对象将被传递给表单。默认的 'new' 方法只是创建一个空的 @website 对象。您的“新”方法应该创建空对象,然后将用户的值初始化为当前用户:
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