текст ссылки Этот пример работает
JavaScriptSerializer serializer = new JavaScriptSerializer();
DateTime dt = DateTime.Now;
DateTime dt1 = dt;
string jsonDateNow = serializer.Serialize(dt1);
Будьте осторожны, выбирая здесь область действия по умолчанию, так как это приведет вас к ложному чувству безопасности, особенно при создании записей.
Я всегда использовал ваш первый пример, чтобы это было ясно :
@page = @go.pages.find(params[:id])
Самая большая причина в том, что вы также хотите, чтобы эта связь применялась к новым записям, поэтому ваши действия new / create будут выглядеть следующим образом, гарантируя, что они правильно привязаны к родительской ассоциации:
# New
@page = @go.pages.new
# Create
@page = @go.pages.create(params[:page])
Вы пытались определить 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, но вы упомянули, что некоторые из них находятся на расстоянии пары соединений. Поэтому, если вы пойдете по этому пути, вам придется переопределить области действия по умолчанию в этих моделях, чтобы адресовать соединения.
Возможно, вам лучше иметь базу данных для каждой учетной записи и переключить соединение с базой данных на основе субдомена.
В дополнение к указанной выше ссылке, если у вас есть модель (в вашем случае Учетная запись), которую вы хотите использовать в базе данных по умолчанию, просто включите в модель установить соединение
.
class Account < ActiveRecord::Base
# Always use shared database
establish_connection "shared_#{RAILS_ENV}".to_sym