0

我这里有一个“鸡还是蛋”的问题......

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

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

任何的想法?

4

1 回答 1

1

在模型中使用 an after_create

after_create :generate_hash

... your model's code ...

private

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

这将保存记录两次,就像您在控制器中所做的一样,只是它将在模型中进行。

于 2012-10-09T20:44:03.530 回答