Ruby on rails 3 Rails 3活动管理员向新记录添加预设值

Ruby on rails 3 Rails 3活动管理员向新记录添加预设值,ruby-on-rails-3,activeadmin,Ruby On Rails 3,Activeadmin,我已经试着从控制器和主动管理覆盖控制器来做这件事,但我无法让它工作 用户创建一个网站。 当前用户具有id属性 网站具有用户id属性 因此,当我创建一个新网站时,我想将当前的\u user.id添加到website.user\u id中。我不能 有人知道怎么做吗 现在,我在新建/创建操作中需要它,但在编辑/更新操作中可能也需要它。这似乎对我有用: ActiveAdmin.register Website do controller do # Do some custom stuff

我已经试着从控制器和主动管理覆盖控制器来做这件事,但我无法让它工作

用户创建一个网站。 当前用户具有id属性 网站具有用户id属性

因此,当我创建一个新网站时,我想将当前的\u user.id添加到website.user\u 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

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

您需要向控制器添加一个“新”方法。“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
请参见

不要忘记“控制器”的定义,我在回答中忽略了它。
ActiveAdmin.register Model do

  # also look in to before_create if hidden on form
  before_build do |record|
    record.user = current_user
  end

end