Kullanıcı hesabımı ve oturum verilerini ayrı bir veritabanına taşımaya çalışıyorum, böylece onu birden çok uygulamada paylaşabilmekteyiz.kurmak_connection birleştirmeyi desteklemiyor gibi görünüyor
establish_connection
numaralı telefonu kullanan bir kişinin farklı bir db'ye bağlanmasını söyleyen bir çok kişiyi gördüm, ancak bunu işe alamıyorum.
yapılandırma/database.yml
development:
adapter: mysql2
encoding: utf8
reconnect: true
pool: 5
host: localhost
database: project_name_development
authentication:
adapter: mysql2
encoding: utf8
reconnect: true
pool: 5
host: localhost
database: authentication
uygulama/model/user.rb
class User < ActiveRecord::Base
establish_connection :authentication
has_one :person
end
uygulama/model/person.rb
class Person < ActiveRecord::Base
belongs_to :user
end
Bu çok çalışıyor gibi görünüyor:
> User.connection.instance_eval { @config[:database] }
=> "authentication"
> Person.connection.instance_eval { @config[:database] }
=> "project_name_development"
ve ben izolasyon User
sorgulayabilir:
> User.joins(:person)
ActiveRecord::StatementInvalid: Mysql2::Error: Table 'authentication.people' doesn't exist: SELECT `users`.* FROM `users` INNER JOIN `people` ON `people`.`user_id` = `users`.`id`
AREL: Ben kırar join
kullanmayı deneyin en kısa sürede
> User.where(:admin => true)
=> [ ... lots of results .. ]
ama Doğru veriyi yansıtma yoluyla almak yerine geçerli veritabanını kullanıyor gibi görünüyor.
Yaklaşık iki yıl önce bu sorun hakkında this very old bug report buldum, ancak eski ARel sözdizimi ile ilgili neredeyse kesin eminim ve kod örneklerinin artık işe yaradığından şüpheliyim.
Bu mümkün mü?
Güncelleme:
User.joins("INNER JOIN project_name.people ON project_name.people.user_id = authentication.users.id")
ama bu gerçekten sıkıcı ve ben katılmak istiyorum tablolardan biri polimorfik geçerli: bunu yaparak biraz ilerleme yaptı.
Ben ekleyerek denedim:set_table_name 'project_name.people'
ama bu O raylar 3. aslında birden çok şema desteklemez geliyor bana
NoMethodError: undefined method `eq' for nil:NilClass
döndürür. Yanlış mıyım?
2.3 sitemi raylara aktarmaya çalışırken aynı sorunu farkettim3. Arel 2.0.6'nın orijinal veri tabanına bir bağlantı sağladığını ve db'nin kuruluş_kodu ile değiştirildiğini fark etmediği anlaşılıyor. Arel HEAD bir gelişme gibi görünüyor, ama başka hatalar fark ediyorum. Rayları 3.0.4 ... –
'a getirin Rails'in bunu desteklemediğinden eminim. – jschorr
@ Rails API'sındaki karudzo API'sı, ActiveRecord'un birden çok DB kullanmasını desteklediğini söylüyor.Eğer 'join' kullanamazsanız, bu benim kitabımda 'destek' olarak nitelendirilemez. –