Что означает inverse_of: nil? - PullRequest
       0

Что означает inverse_of: nil?

0 голосов
/ 25 октября 2018

Я понимаю, что делает inverse_of, но не понимаю inverse_of: nil.Так, например,

class Book
  include Mongoid::Document
  belongs_to :author, inverse_of: nil
end

class Author
  include Mongoid::Document
end

Нет связи между автором и книгой.Использование автора и книги, вероятно, плохой пример, но я надеюсь, что вы поняли идею.Я вижу, inverse_of: nil использовал много.Так хочется это понять.

1 Ответ

0 голосов
/ 25 октября 2018

Он охватывает Mongoid особый случай, когда противоположные отношения не определены.

В вашем примере вам нужно будет включить inverse_of: nil в class Book , если class Author не использует has_many :books.

Традиционный случай:

# app/models/book.rb
class Book
  field :title
  belongs_to :author
end

# app/models/author.rb
class Author
  field :name
  has_many :books
end

Нет случая противоположных отношений:

class Book
  field :title
  belongs_to :author, inverse_of: nil
end

# here we use `get_books` instead of `has_many :books`
# so we need `inverse_of: nil` so Mongoid doesn't get confused
class Author
  field :name
  # has_many :books

  def get_books
    Book.in(author_id: self.id)
  end
end

Дополнительное чтение: http://dmitrypol.github.io/mongo/2016/12/05/habtm-inverse-nil.html#traditional-has_and_belongs_to_many

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...