我需要自动填充基于MyModel.id
的字段。使用正确的before_x
类似过滤器的是什么?我使用的私有方法就像:
def _generate_code
hashids = Hashids.new("this is my salt", 6)
self.code = 'WA' + hashids.encode(self.id).upcase
end
我还需要保护validates_presence_of :code
和validates_uniqueness_of :code
问题是在before_save
中,Model.id不存在,而且由于验证失败,我无法访问after_save
答案 0 :(得分:0)
以下代码在before_validation
过滤器
def _generate_code
if !self.code
next_id=Wallet.connection.select_value("Select nextval('wallets_id_seq')")
hashids = Hashids.new("this is my salt", 6)
self.code = 'WA' + hashids.encode(next_id).upcase
end
end