Направляющие: лучшая практика для обзора запросов на основе субдомена?

текст ссылки Этот пример работает

JavaScriptSerializer serializer = new JavaScriptSerializer();

DateTime dt = DateTime.Now;
DateTime dt1 = dt;

string jsonDateNow = serializer.Serialize(dt1);

9
задан Ryan Bigg 21 October 2009 в 09:33
поделиться

3 ответа

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

Я всегда использовал ваш первый пример, чтобы это было ясно :

@page = @go.pages.find(params[:id])

Самая большая причина в том, что вы также хотите, чтобы эта связь применялась к новым записям, поэтому ваши действия new / create будут выглядеть следующим образом, гарантируя, что они правильно привязаны к родительской ассоциации:

# New
@page = @go.pages.new

# Create
@page = @go.pages.create(params[:page])
2
ответ дан 3 November 2019 в 07:48
поделиться

Вы пытались определить default_scope a лямбда ? Бит лямбда , который определяет, что параметры оцениваются каждый раз, когда используется область видимости.

class Page < ActiveRecord::Base
  default_scope lambda do 
   {:conditions => "organization_id = #{Thread.current[:organization]}"}
  end
  # yadda yadda
end

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

Если вам нужно такое поведение для всех моделей, вы можете добавить default_scope в ActiveRecord :: Base, но вы упомянули, что некоторые из них находятся на расстоянии пары соединений. Поэтому, если вы пойдете по этому пути, вам придется переопределить области действия по умолчанию в этих моделях, чтобы адресовать соединения.

2
ответ дан 3 November 2019 в 07:48
поделиться

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

В дополнение к указанной выше ссылке, если у вас есть модель (в вашем случае Учетная запись), которую вы хотите использовать в базе данных по умолчанию, просто включите в модель установить соединение .

class Account < ActiveRecord::Base

  # Always use shared database
  establish_connection  "shared_#{RAILS_ENV}".to_sym
0
ответ дан 3 November 2019 в 07:48
поделиться
Другие вопросы по тегам:

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