Ruby on Rails - 创建记录后设置属性

时间:2018-05-06 15:12:43

标签: ruby-on-rails activerecord activeadmin update-attribute

我在我的RoR webapp中使用activeadmin。当我创建一个新的用户/记录时,我想根据它的id / pk设置/更新属性。例如,他的id是1234,列X的值应该是1234-XXX。

由于没有activerecord回调(我不能用回调设置值,因为没有一个,在数据库中创建/存储条目后)你要问,我怎么能解决这个问题?

提前致谢

2 个答案:

答案 0 :(得分:1)

您可以使用after_action控制器回调:

class RecordsController < ApplicationController
  after_action :set_columnx, only: [:create, :update]

  private
  def set_columnx
    @record = Record.find(params[:id])
    @record.columnx = "#{@record.id}-ABCD"
    @record.save!
  end
end

答案 1 :(得分:1)

我认为你可以使用after_commit回调

after_commit :do_something, on: :create

def do_something
  update_column(:column_x, "#{id}-XXX")
end