Я довольно новичок в RoR. Извините, если я использую неправильную терминологию или ответ очевиден.
Изначально у меня была одна модель для пользователей:
class User
include Mongoid::Document
devise :database_authenticatable,
:registerable,
:recoverable,
:rememberable,
:trackable,
:validatable,
:token_authenticatable,
:omniauthable
has_many :foos
field :name, :type => String
# Some other company fields
....
end
class Foo
include Mongoid::Document
belongs_to :user
...
end
Эта первоначальная модель пользователя использовалась для представления компании.
Затем я решил добавить другую модель, которая будет играть роль, отличную от исходной модели User, поэтому я начал использовать полиморфные ассоциации и перенес необходимые поля из модели User в Company. Я также добавил модель менеджера, которая не имеет прямого отношения к компании. Я в основном использую модель пользователя для разработки.
class User
include Mongoid::Document
devise :database_authenticatable,
:registerable,
:recoverable,
:rememberable,
:trackable,
:validatable,
:token_authenticatable,
:omniauthable
belongs_to :rolable, :polymorphic => true
end
class Company
include Mongoid::Document
has_one :user, :as => :rolable
has_many :foos
field :name, :type => String
# Some other company fields
....
end
class Manager
include Mongoid::Document
has_one :user, :as => rolable
end
class Foo
include Mongoid::Document
belongs_to :company
...
end
Кажется, что пока все работает нормально для регистрации новых пользователей. Тем не менее, есть старая база данных, которую я должен преобразовать. Что меня смущает, так это ассоциация has_many, которая у меня была раньше. Я уже реализовал миграцию (используя этот драгоценный камень https://github.com/adacosta/mongoid_rails_migrations) для перемещения полей из пользовательской модели в модель компании, но, опять же, я не мог понять, как обращаться с ассоциациями.