- 紅寶石2.1
- 的Rails 4.2
我需要生成(通過串聯)代碼(其中包含產品ID)的新記錄。 問題是必須創建記錄才能擁有一個id。所以我不能在「創建」上生成代碼,因爲ID尚不存在。我卡住了。串連ID 「創造」
到目前爲止它工作,但只在更新。
class Product < ActiveRecord::Base
before_save :generate_code
private
def generate_code
tag = tags.map(&:name).join(", ").first(2)
self.code = ("#{category_id} #{tag} #{id} #{glaze.code}").parameterize
end
end
如何創建新記錄並同時在「代碼」上連接您的ID?
更新:
我需要它更新了。
最終的解決方案是:
class Product < ActiveRecord::Base
after_save :generate_code
private
def generate_code
tag = tags.first.name.first(2)
update_column(:code, ("#{category_id}" + "#{tag}" + "#{id}" + "#{glaze.code}").parameterize.upcase)
end
end
你可以有一個「部分代碼」,它不包含記錄的「ID」,當你想獲得「完整的代碼「的模型將計算真正的完整代碼與部分1 + ID。 – MrYoshiji 2015-03-31 18:10:53
這將是很好,但我需要整個代碼進行搜索。 – maiconsanson 2015-03-31 18:26:29
你也可以使用'after_create'回調。這種方式只創建一次,根本不會影響「保存」。例如'after_create:generate_code'然後代替'self.code ='使用'update_attribute(:code,「#{category_id}#{tag}#{id}#{glaze.code}」)' – engineersmnky 2015-03-31 18:40:16