我在我的 RoR webapp 中使用 activeadmin。当我创建一个新的用户/记录时,我想设置/更新一个属性取决于它的 id/pk。例如,他的 id 是 1234,列 X 的值应该是 1234-XXX。
由于没有 activerecord 回调(我不能用回调设置值,因为没有一个,在条目被创建/存储在数据库中之后)你问,我怎么能解决这个问题?
提前致谢
我在我的 RoR webapp 中使用 activeadmin。当我创建一个新的用户/记录时,我想设置/更新一个属性取决于它的 id/pk。例如,他的 id 是 1234,列 X 的值应该是 1234-XXX。
由于没有 activerecord 回调(我不能用回调设置值,因为没有一个,在条目被创建/存储在数据库中之后)你问,我怎么能解决这个问题?
提前致谢
我认为你可以使用after_commit
回调
after_commit :do_something, on: :create
def do_something
update_column(:column_x, "#{id}-XXX")
end
您可以使用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