保存模型时,自动从模型的ID +名称创建哈希

时间:2012-10-09 20:23:26

标签: ruby-on-rails-3 hash generator

我这里有“鸡肉或鸡蛋”的问题......

我有一个带有唯一字段的模型,该字段是使用记录ID(模型的id)和字符串创建的,我在此字段的迁移(哈希)中有一个:null => false所以。 ..当使用例如before_validation保存对象时,应该自动生成此哈希,但问题是我需要数据库中的id来创建哈希,但是在保存对象之前我没有这个id ...那我该怎么解决呢?这不是一个更改数据库限制的选项,因为它已经在生产中,也不是更改哈希种子的选项,我必须使用ID ...

我现在正在做什么(我知道这不是一个很好的解决方案)是在哈希字段中保存一个虚拟并保存记录,之后我创建哈希并再次保存对象...但这是在控制器中制作,我希望在模型中拥有所有业务逻辑......

任何想法?

1 个答案:

答案 0 :(得分:1)

在模型中使用after_create

after_create :generate_hash

... your model's code ...

private

def generate_hash
  # hash generation code goes here
  self.save
end

这将保存记录两次,就像你在控制器中做的那样,除了它会在模型​​中完成。