У меня очень сложная проблема с рельсами, и я подумал попросить о помощи.Ситуация выглядит так:
Я использую спокойную аутентификацию для моей модели User.Теперь у пользователя есть поле с именем «gold», которое является числовым значением.Существует еще одна модель с именем Book, которая была создана с использованием строительных лесов.
То, что я хочу сделать, просто, но я не вижу способа сделать это.Я хочу добавить подтверждение, когда, если у пользователя нет золота, скажем, 100, он не может создать новую запись в книге (из стандартного представления лесов).
Теперь проблема в том, что мне нужна информация current_user для того, чтобычтобы проверить это из моей модели.Мне это нужно для того, чтобы получить идентификатор пользователя и, следовательно, получить их количество золота.Я не могу найти хороший способ (если есть) сделать это.
Другая мысль делала это с контроллера.Однако стандартный блок if @ book.save на самом деле не позволяет мне вставлять свои собственные сообщения об ошибках (внутри scaffold create):
if not User.has_the_needed_gold(current_user, 100)
flash[:goldError] = 'You do not have the needed gold to create this book.'
#end
respond_to do |format|
if @book.save
flash[:notice] = 'Book was successfully created.'
format.html { redirect_to(@book) }
format.xml { render :xml => @book, :status => :created, :location => @book }
else
format.html { render :action => "new" }
format.xml { render :xml => @book.errors, :status => :unprocessable_entity }
end
end
Теперь я не могу вывести это сообщение и прервать сохранениеновая книга, а также.Я попытался добавить свою собственную ошибку в базу, но она была очищена (после сохранения, я думаю).Я совершенно запутался в ситуации и искал пару часов безрезультатно.
Если кто-нибудь может помочь с этим, пожалуйста, сделайте это, вы избавите меня от многих проблем :)
Спасибо за чтение!