在下面的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
我想将帐户ID存储在名为ac
的字段中,而不是account_id
。
答案 0 :(得分:6)
您可以使用:foreign_key指定mongodb字段名称。
belongs_to :account, foreign_key: :ac
但是,如果要使用account_id,则需要声明其别名:
alias :account_id :ac
或在belongs_to之前定义account_id:
field :account_id, as: :ac
答案 1 :(得分:1)
Mongoid允许使用'inverse_of'
为关系使用任意名称如果不需要反转,例如belongs_to或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