Скажем, a User
имеет многих Document
s, и сингл 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
имеет, но не то, что я хочу. Как я фиксирую его?
Нужно поменять ваши модели на
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
, а затем сохраните пользователя, то можете получить переполнения стека или другие сумасшедшие ошибки.