如何使用Globalize gem编写多语言seed.rb

问题描述

使用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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...