Rails 友好 ID:model.new 或 model.import 上未生成 slug
Rails Friendly ID: slug is not generated on model.new or model.import
您好,我正在使用 friendly_id gem,
class Student < ActiveRecord::Base
extend FriendlyId
friendly_id :name, use: :slugged
此处Student.create根据需要生成一个名称为slug。
但就我而言,我正在使用 'new' 方法创建学生数组并使用 active-record-import
保存到数据库
student_names.uniq.each do |s|
students << Student.new(name: s)
end
Student.import students, on_duplicate_key_update: {
conflict_target: [:name],
timestamps: true
}
在 'new' 上,它不会创建 slug,在导入时也是如此。
如何在导入时生成 slug?
提前致谢
FriendlyId 使用 before_validation
回调来生成和设置 slug
(doc), but activerecord-import
does NOT call ActiveRecord callbacks ...(wiki).
因此,您需要手动调用 before_validation
回调:
students.each do |student|
# Note: if you do not pass the `{ false }` block, `after_callback` will be called and slug will be cleared.
student.run_callbacks(:validation) { false }
end
Student.import ...
您好,我正在使用 friendly_id gem,
class Student < ActiveRecord::Base
extend FriendlyId
friendly_id :name, use: :slugged
此处Student.create根据需要生成一个名称为slug。
但就我而言,我正在使用 'new' 方法创建学生数组并使用 active-record-import
保存到数据库student_names.uniq.each do |s|
students << Student.new(name: s)
end
Student.import students, on_duplicate_key_update: {
conflict_target: [:name],
timestamps: true
}
在 'new' 上,它不会创建 slug,在导入时也是如此。
如何在导入时生成 slug? 提前致谢
FriendlyId 使用 before_validation
回调来生成和设置 slug
(doc), but activerecord-import
does NOT call ActiveRecord callbacks ...(wiki).
因此,您需要手动调用 before_validation
回调:
students.each do |student|
# Note: if you do not pass the `{ false }` block, `after_callback` will be called and slug will be cleared.
student.run_callbacks(:validation) { false }
end
Student.import ...