1

私はこのような関係を持っています:

組織:

class Organization
  include Mongoid::Document
  include Mongoid::Timestamps

  field :name, type: String
  field :email, type: String

  has_and_belongs_to_many :users
end

ユーザー:

class User
  include Mongoid::Document
  include Mongoid::Timestamps
  include ActiveModel::SecurePassword

  has_secure_password

  #Fields
  field :nick, type: String
  field :name, type: String
  field :email, type: String
  field :password_digest, type: String #for bcrypt-ruby

  #Validations
  ## Presence
  validates :nick, presence: true
  validates :email, presence: true
  validates :password, presence: true, :on => :create

  #Uniqueness
  validates :nick, uniqueness: true
  validates :email, uniqueness: true

  #Relations
  has_many :documents, dependent: :delete
  has_many :storages, dependent: :delete

  has_and_belongs_to_many :organizations
end

組織とユーザーを救うことができます。関係は正常に機能しますが、今度は所有者を組織に追加します。これもユーザーです。試してみましhas_one :user, as: :ownerたが、うまくいきませんでした。

4

1 に答える 1

2

これを組織に追加してみてください。rb:

has_one :owner, class_name: "User", inverse_of :owns

これをuser.rbに追加します。

belongs_to :owns, class_name: "Organization", inverse_of :owner

has_oneまたは、必要に応じて、ロジックを逆にして、をユーザークラスとbelongs_to組織に配置することもできます。明らかに、それはアプリケーションのロジックに依存します。

于 2012-08-13T02:11:46.487 に答える