Rails - 在创建时根据id自动填充字段

时间:2017-08-14 09:33:20

标签: ruby-on-rails

我需要自动填充基于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 :codevalidates_uniqueness_of :code

问题是在before_save中,Model.id不存在,而且由于验证失败,我无法访问after_save

1 个答案:

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