11

belongs_to以下の Mongoid モデルで、リレーションシップ フィールドにエイリアスを設定するにはどうすればよいですか?

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ではなく、というフィールドにアカウント ID を保存したいと考えていますaccount_id

4

2 に答える 2

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
于 2013-09-13T08:45:08.270 に答える
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
于 2013-02-04T07:52:58.737 に答える