При создании объекта в Ruby on Rails, какой метод сохранения Вы предпочитаете, и почему?

В случае с Python3 вам следует создать экземпляр Queue следующим образом:

from queue import Queue
working_queue = Queue()

Будьте осторожны с регистром первых букв ...

7
задан Tony 7 April 2009 в 14:50
поделиться

4 ответа

class VenuesController < ApplicationController
  def create
    @venue = @user.venues.create!(params[:venue])
    render :partial => 'venue_select_box', :success => true, :status => :ok
  end

  rescue_from ActiveRecord::RecordInvalid do
    render :text => 'Put errors in here', :success => false, :status => :unprocessable_entity
  end
end

Используя @user.venues таким образом удостоверьтесь, что идентификатор пользователя будет всегда устанавливаться соответственно. Кроме того, ActiveRecord защитит :user_id поле от присвоения в ходе #create! звонить. Следовательно, нападения с внешней стороны не смогут изменить :user_id.

В Ваших тестах можно проверить что, делая POST к: создайте повышает ActiveRecord:: исключение RecordInvalid.

4
ответ дан 7 December 2019 в 01:26
поделиться

Я имею философскую школу, что исключения не должны использоваться для стандартных условий, таким образом, я скажу, что второе лучше.

3
ответ дан 7 December 2019 в 01:26
поделиться

Это зависит. Если Вы ожидаете, что все создать операторы будут работать, используйте первого, потому что отказ к создавать-и-сохранять является исключительным, и может возможно быть условием, с которого не может с готовностью восстановиться программа. Кроме того, при использовании реляционной целостности (foreign_key_migrations RedHill Consulting), это выдаст исключения на нарушениях внешнего ключа, таким образом, Вы, вероятно, захотите поймать их, создавая или обновляя.

Второе осуществимо, и хорошо, если запрос, не успешно выполняющийся, является чем-то, что Вы ожидаете как часть повседневной эксплуатации того конкретного действия.

Кроме того, Ваш комментарий к коду о сессии, являющейся небезопасным - сессия, является местом для помещения user_id. Пока Вы проверяете, чтобы проверить, что пользователь аутентифицировался прежде, чем сделать что-либо еще, Вы будете хорошо.

2
ответ дан 7 December 2019 в 01:26
поделиться

Я полностью соглашаюсь с комментарием Дона. Но я даже пошел бы один шаг вперед с user_id частью и установил бы его как перед фильтром на модели.

1
ответ дан 7 December 2019 в 01:26
поделиться
Другие вопросы по тегам:

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