我在after_commit回調中更新緩存屬性時遇到了Globalize3 gem的問題。after_commit回調中的globalize.with_locale不會改變任何東西
#In My Model
after_commit :write_localized_caches
private
def write_localized_caches
I18n.available_locales.each do |locale|
Globalize.with_locale(locale) do
self.write_attribute(:name, 'some localized string here')
end
end
end
它啓動after_commit callbach並且屬性值很好。但畢竟我的模特的名字還是空的!
也許我在濫用with_locale
還是有人遇到同樣的問題?
更新1. 我絕對想使用after_commit回調來對保存的對象執行復雜的查詢。 在回調中打印出self.name只返回我想要的:'correct_string'。但是id沒有打到數據庫。 完成寫作新的翻譯創作。好像Globalize的使用回調在其地下室:
def write_localized_caches
I18n.available_locales.each do |locale|
Globalize.with_locale(locale) do
self.translations.create!(name: 'some localized string here', locale: locale)
end
end
end
這工作,但仍然不覺得我的權利!
感謝您的聯繫。由於複雜的查詢,我一定希望它在after_commit回調中發生。看到上面的更新。 – prikha