#ruby-on-rails
#ruby-on-rails
Вопрос:
Привет всем, я пытаюсь понять, как справиться с подобной ситуацией.
У меня есть модель
Class Content < Activerecord
has_many :elements
has_many :assets, :dependent => :destroy
end
У меня есть форма, и, конечно, в моем контроллере у меня есть
def new
@content = Content.new
end
Давайте возьмем «активы».
Ресурсы — это файлы, такие как js, css, и я использую виджет jquery внутри моей формы для их загрузки.
Элементы подобны форме: я создаю их внутри «новой формы».
В фактической версии моего приложения в моем контроллере я использую
def new
@content = Content.create
end
Я создаю и сохраняю в БД каждый контент, поэтому у меня есть идентификатор, и я использую идентификатор для загрузки ресурсов с помощью виджета jquery и для создания страниц с использованием ajax post.
Используя «Content.new», у меня нет никакого идентификатора, я инициализирую свою модель контента, и у меня нет никакого идентификатора.
Есть ли какой-либо обходной путь? Возможно ли инициализировать с идентификатором и зарезервировать этот идентификатор, чтобы избежать переопределения? Или я должен изменить свой интерфейс?
Комментарии:
1. как
create
выглядит ваш?
Ответ №1:
Если ваш контент будет принадлежать какой-либо другой модели, тогда вы можете создать объект с некоторым идентификатором!
Class Content < Activerecord
belongs_to :user
has_many :elements
has_many :assets, :dependent => :destroy
end
Class User < Activerecord
has_many :contents
end
Content.create(user_id: 1)
will return
#<Content id: 10008, user_id: 1 >
Ответ №2:
Сохраните пустое содержимое, чтобы создать пустую запись или зарезервировать запись в вашей базе данных.
def new
@content = Content.create
@content.save!
end
Но имейте в виду, что если вы резервируете идентификатор / запись в базе данных, вам нужно будет уничтожить его, если ваша форма по какой-либо причине завершится с ошибкой. Или работайте с пустыми записями в случае сбоя.