2012-06-26 5 views
14

Ứng dụng đường ray của tôi có cơ sở dữ liệu MySql riêng (và yêu cầu gem mysql2) nhưng cũng cần kết nối với cơ sở dữ liệu MongoDB bên ngoài cho một mô hình cụ thể (và vì vậy tôi đã bao gồm mongoid và bson_ext trong Gemfile). Bây giờ khi tôi cố gắng tạo ra một sự chuyển đổi cho một mô hình mới, nó nói với tôi rằngThiết lập kết nối cơ sở dữ liệu mặc định Rails

$ rails g migration CreateLocations 
     error mongoid [not found] 

Khi tôi tạo ra các mô hình Location nó bao gồm tài liệu Mongoid ::, vì vậy Rails rõ ràng rằng nó được sử dụng cơ sở dữ liệu bên ngoài như chính của tôi kho dữ liệu.

databse.yml:

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

mongoid.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 

CẬP NHẬT mẫu có sử dụng Mongo

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 
+0

Một cách giải quyết là nhận xét ra 'mongoid' trong Gemfile của tôi, tạo và chạy các di chuyển, sau đó bỏ ghi chú và trả lại. Rõ ràng là không hợp pháp. – Chris

+0

Vui lòng đăng mã mô hình có liên quan cho mã sử dụng MongoDB. Đã cập nhật –

+0

@DeanBrundage – Chris

Trả lời

24

Thêm phần này vào khối ứng dụng trong cấu hình của bạn /application.rb:

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

(giải pháp phát hiện here)

17

Nếu bạn không muốn thay đổi config/application.rb bạn có thể sử dụng điều này trong khi tạo ra mô hình:

rails generate active_record:migration 

Nếu bạn thay đổi tệp application.rb, để gọi một trình tạo kiểu mongoid, hãy nói cho một 'số liên lạc' của mô hình, người ta sẽ sử dụng:

rails g mongoid:model contacts 

(solution link)

1

Đầu tiên kiểm tra các khối dưới đây là hiện diện trong config/tập tin application.rb trong ứng dụng ray của bạn

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

Nếu không được bổ sung sau đó, nếu không bạn có thể chạy

rails g active_record:migration