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

时间:2020-10-07 18:20:10

标签: ruby-on-rails internationalization seed dynamic-content globalize

使用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,
     photo:'nicaragua.jpg',
     category: coffee)

I18n.locale = :pt

nica_small = Product.create!(

    weight: 250,
    price_cents: 1250,
    photo:'nicaragua.jpg',
    category: coffee,
    origin: 'Nicaragua Portugais',
    name:'Cerro de Jesus farm PORT',
    region: 'Jalapa, Neuva Segovia',
    process: 'washed',
    grind_options: ['Whole Beans','Ground for filter','Ground for Aeropress'],
    cupping_notes: 'coffee cherry, lemon',
    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, 07 Oct 2020 17:34:11 UTC +00:00,
 weight: 1000,
 price_cents: 4366,
 stripe_id_week: nil,
 stripe_id_month: nil,
 price: nil

0 个答案:

没有答案