未定义的方法`create_translation_table!'

时间:2012-12-17 00:54:29

标签: ruby-on-rails globalize3

我有一个新的rails引擎,我想使用globalize3。我在我的lib // engine.rb中执行了此操作:

require 'globalize3'

module SimpleCms
  class Engine < ::Rails::Engine
  end
end

现在,我尝试创建这样的迁移:

class CreatePages < ActiveRecord::Migration
  def up
    create_table :pages do |t|
      t.string :path
      t.timestamps
    end
    Page.create_translation_table! title: :string, body: :body
  end

  def down
    drop_table :pages
    Page.drop_translation_table!
  end
end

我有这个错误:

undefined method `create_translation_table!' for #<Class:0x00000001d5ca18>

我认为未加载文件'lib / globalize / active_record / migration.rb'。

任何解决方案?

3 个答案:

答案 0 :(得分:21)

你必须添加

translates :attributename
在运行迁移之前,

到Engine模型文件。 (替换:具有您要翻译的属性的attributename)。这为我解决了。

答案 1 :(得分:1)

试试这个

SimpleCms::Page.create_translation_table! title: :string, body: :body

但外键将变为simplecms_page_id,我手动将其更改回page_id

答案 2 :(得分:1)

就我而言,globilize gem 无法正常工作,因为 traco gem 也在 Gemfile 中。删除 traco 修复了错误。所以我想只允许使用一种翻译宝石