Подтвердить что ты не робот

Слияние ссылочного поля отношений в Mongoid

В монгодской модели ниже, как я могу связать поле отношения belongs_to?

class Contact
  field :nm, :as => :name, :type => String # field aliasing
  embeds_one :address, :store_as => :ad  # embedded document aliasing
  belongs_to :account # referenced relation doesn't support store_as
end

Я хочу сохранить идентификатор учетной записи в поле с именем ac вместо account_id.

4b9b3361

Ответ 1

Вы можете использовать: foreign_key для указания имени поля mongodb.

belongs_to :account, foreign_key: :ac

Однако, если вы хотите использовать account_id, вам нужно объявить его псевдоним:

alias :account_id :ac

или определить account_id перед свойством:

field :account_id, as: :ac

Ответ 2

Mongoid позволяет использовать произвольное имя для отношения, используя 'inverse_of'

Если инверсия не требуется, например, принадлежность_или или has_and_belongs_to_many, убедитесь, что: inverse_of = > nil задано на связь. Если требуется обратное, то, скорее всего, обратное не может быть выяснилось из названий отношений, и вам нужно будет явно сообщают Mongoid о том, что такое обратное.

Итак, для использования "ac" в качестве псевдонима необходимо добавить inverse_of:

class Contact
  field :nm, :as => :name, :type => String # field aliasing
  embeds_one :address, :store_as => :ad  # embedded document aliasing
  belongs_to :ac, class_name: 'Account', inverse_of: :contact
end

class Account
  has_one :contact, class_name: 'Contact', inverse_of: :ac
end