8

我试图从控制器和活动的管理员覆盖控制器中做到这一点,但我无法让它工作。

用户创建网站。current_user 有一个 id 属性网站有一个 user_id 属性

因此,当我创建一个新网站时,我想将 current_user.id 添加到 website.user_id 中。我不能。

有人知道怎么做吗?

现在我在新/创建操作中需要它,但我可能在编辑/更新操作中也需要它。

4

3 回答 3

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

您应该能够以相同的方式覆盖其他控制器操作。

于 2011-10-20T22:47:36.310 回答
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

See https://github.com/activeadmin/activeadmin/blob/master/lib/active_admin/resource_dsl.rb#L156

于 2015-02-26T09:36:28.173 回答
4

您需要向控制器添加一个“新”方法。'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
于 2013-05-31T12:24:47.163 回答