Направляющие: has_many, но также и has_one другим именем

Скажем, a User имеет многих Documents, и сингл Document они в настоящее время продолжают работать. Как я представляю это в направляющих?

Я хочу сказать current_user.current_document = Document.first (с или без current_ перед документом), и имеют, он не изменяется current_user.documents набор.

Это - то, что я имею:

class Document < ActiveRecord::Base
  belongs_to :user
end

class User < ActiveRecord::Base
  has_many :documents
  has_one :document
end

проблема - это, когда я говорю current_user.document = some_document, это удаляет документ, ранее хранивший в current_user.document от current_user.documents. Это имеет смысл из-за has_one отношения это Document имеет, но не то, что я хочу. Как я фиксирую его?

5
задан Peter 4 February 2010 в 10:57
поделиться

1 ответ

Нужно поменять ваши модели на

class Document < ActiveRecord::Base
  belongs_to :user
end

class User < ActiveRecord::Base
  has_many :documents

  # you could also use :document, but I would recommend this:
  belongs_to :current_document, :class_name => "Document"
end

P.S. Но остерегайтесь циклических сохранений. Если вы создадите нового пользователя (и еще не сохраните его) и установите current_document, а затем сохраните пользователя, то можете получить переполнения стека или другие сумасшедшие ошибки.

8
ответ дан 14 December 2019 в 04:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: