Rails 3 Active Admin将预设值添加到新记录中

时间:2011-09-26 16:02:44

标签: ruby-on-rails-3 activeadmin

我曾尝试从控制器和主动管理覆盖控制器执行此操作,但我无法使其正常工作。

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

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

有人知道吗?

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

3 个答案:

答案 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