问题描述
使用rails 5.2并全球化gem文件,我有一个种子文件,该文件用一些英语内容填充我的Products表。我希望能够用葡萄牙语翻译填充seed.rb文件,但我无法管理,因为当我运行rails db:seed时,所有翻译后的属性都未记录在我的产品中。
我将要翻译的属性放在product.rb中:
class Product < ApplicationRecord
belongs_to :category
monetize :price_cents
translates :name,:origin,:region,:process,:grind_options,:cupping_notes,:description
end
我运行此迁移以创建转换表:
class CreateProductTranslations < ActiveRecord::Migration[5.2]
def self.up
Product.create_translation_table!({
:name => :string,:description => :text,:region => :string,:process => :string,:origin => :string,:cupping_notes => :text,:grind_options => :string
},{
:migrate_data => true,:remove_source_columns => true
})
end
def self.down
Product.drop_translation_table! :migrate_data => true
end
end
我的seed.rb文件看起来像这样:
puts 'Cleaning database...'
Product.destroy_all if Rails.env.development?
Category.destroy_all if Rails.env.development?
puts 'Creating categories...'
coffee = Category.create!(name: 'coffee')
equipment = Category.create!(name: 'equipment')
puts 'Creating coffees...'
I18n.locale = :en
nica_small = Product.create!(
weight: 250,price_cents: 1250,photo:'nicaragua.jpg',category: coffee,origin: 'Nicaragua',name:'Cerro de Jesus farm',region: 'Jalapa,Neuva Segovia',process: 'washed',grind_options: ['Whole Beans','Ground for filter','Ground for Aeropress'],cupping_notes: 'coffee cherry,lemon',description: 'very good,category: coffee)
I18n.locale = :pt
nica_small = Product.create!(
weight: 250,origin: 'Nicaragua Portugais',name:'Cerro de Jesus farm PORT',description: 'muito bem',)
我发现的有关全球化的所有信息都是在编辑新内容时如何用其他语言填充数据库,因此:en和:pt中的记录都将可用。我的问题是我想直接播种两种语言。我该怎么办?
播种后,我得到了这种记录(翻译后的属性不存在):
=> #<Product:0x00007fba147807f0
id: 180,category_id: 23,photo: "nicaragua.jpg",created_at: Wed,07 Oct 2020 17:34:11 UTC +00:00,updated_at: Wed,weight: 1000,price_cents: 4366,stripe_id_week: nil,stripe_id_month: nil,price: nil
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)