目前,保存前会生成friendly_id
。因此,如果表单中有任何错误,它将生成友好ID并重新加载。问题是我使用javascript批量编辑表单字段。我通过ID来选择要编辑的字段。例如,要查找类别,我会生成脚本以查找photos_61081719_category
midle部分是ID。如果表单重新加载有错误,此ID将转为友好ID,从而破坏脚本。有办法解决这个问题吗?
答案 0 :(得分:1)
正如@JustMichael所说,使用before_save
回调应该完全符合你的要求。这是the API callback documentation。从技术上讲,你并没有说你明确地使用了这个回调,所以这可能是问题所在。
class Category
before_save :generate_friendly_id # this code is only called if there are no errors
private
def generate_friendly_id
# ...
end
end
如果仍然生成友好ID,则可能表示您的验证正在通过。如果您实际上正在更改模型的主键(意味着您使用friendly_id
表Category
的{{1}}值,则必须确保这将是一个唯一值,否则模型将通过验证但在底层数据库遇到pk而不是唯一约束时无法创建。
内置的唯一性验证不会对此产生影响,因为您在验证后生成了id
。