24

私の Rails アプリには独自の MySql データベースがあります (そして mysql2 gem が必要です) が、1 つの特定のモデル用に外部の MongoDB データベースに接続する必要もあります (そのため、Gemfile に mongoid と bson_ext を含めました)。新しいモデルの移行を生成しようとすると、次のように表示されます

$ rails g migration CreateLocations
       error  mongoid [not found]

Location モデルを生成したとき、Mongoid::Document が含まれていたため、Rails は明らかに外部データベースをプライマリ データストアとして使用していると考えています。

データベース.yml:

development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: associalize_development
  pool: 5
  username: root
  password:
  socket: /tmp/mysql.sock

モンゴイド.yml:

development:
  host: pearl.mongohq.com
  port: 27019
  username: asfasdf
  password: sadfasdf
  database: app4574678

test:
  host: pearl.mongohq.com
  port: 27019
  username: asdfadhasdfa
  password: hadsadfas
  database: app4574678

production:
  host: pearl.mongohq.com
  port: 27019
  username: asdfdfsasda
  password: afdasdfdasdf
  database: app4574678

Mongo を使用するUPDATEモデル

class ExternalMongoModel
  include Mongoid::Document

  field :title
  field :long_title
  field :deal_type
  field :merchandise_type
  field :market_id
  field :market_name
  field :market_location, type: Array
  field :featureType
  field :country_code
  field :subtitle
  field :offer_ends_at
  field :price
  field :value
  field :merchant_type
  field :content
  field :merchant

  index(
    [[:division_latlon, Mongo::GEO2D]], background: true
  )

end
4

3 に答える 3

43

これを のアプリケーション ブロックに追加しますconfig/application.rb

config.generators do |g|
  g.orm :active_record
end

ここにあります

于 2012-09-14T04:44:07.137 に答える
30

If you don't want to change the config/application.rb you could use this while generating the model:

rails generate active_record:migration

If you change the application.rb file, to invoke a mongoid generator, say for a model 'contacts', one would use:

rails g mongoid:model contacts

(solution link)

于 2014-04-29T06:21:16.060 に答える
6

まず、以下のブロックが Rails アプリケーションの config/application.rb ファイルに存在することを確認します

config.generators do |g|
  g.orm :active_record
end

追加しない場合は実行できます

rails g active_record:migration
于 2016-02-08T17:51:37.800 に答える