Объединение в цепочку дополнения с named_scope

Я использовал GZipStream для сжатия вывода от.NET XmlSerializer, и это работало превосходное для распаковки результата с gunzip (в cygwin), winzip и другой GZipStream.

Для ссылки, вот то, что я сделал в коде:

FileStream fs = new FileStream(filename, FileMode.Create, FileAccess.Write);
using (GZipStream gzStream = new GZipStream(fs, CompressionMode.Compress))
{
  XmlSerializer serializer = new XmlSerializer(typeof(MyDataType));
  serializer.Serialize(gzStream, myData);
}

Затем для распаковки в c#

FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
using (Stream input = new GZipStream(fs, CompressionMode.Decompress))
{
   XmlSerializer serializer = new XmlSerializer(typeof(MyDataType));
   myData = (MyDataType) serializer.Deserialize(input);
}

Используя утилиту 'файла' в cygwin показывает, что существует действительно различие между тем же файлом, сжатым с GZipStream и с GNU GZip (вероятно, информация заголовка, как другие заявили в этом потоке). Это различие, однако, кажется, не имеет значение на практике.

9
задан Michael Sofaer 12 August 2009 в 09:34
поделиться

3 ответа

Итак, у вас есть:

class User < ActiveRecord::Base
  named_scope :big_haired, :conditions => {:hair => 'massive'}
  named_scope :plays_guitar, :conditions => {:plays => 'guitar'}
end

User.big_haired.plays_guitar => Множество пользователей.

Мне неизвестен способ смешать их вместе. Возможно, просто смешивание массивов:

@users = (User.big_haired + User.plays_guitar).uniq
2
ответ дан 3 November 2019 в 07:48
поделиться

Я только что опробовал это на некоторых своих моделях, для которых определены named_scopes. Он объединит условия как условие И, если вы их объедините. Итак ...

User.big_haired.plays_guitar

приведет к (очевидно, мой сокращенный SQL, а не настоящий материал, сгенерированный рельсами)

SELECT * FROM users WHERE hair = 'massive' AND plays = 'guitar'

Я не знаю способа объединить их как отношение ИЛИ. Было бы невероятно сложно смешать это, когда вы думаете о различных вариантах. Мы все время связываем named_scopes, это работает хорошо (если вы хотите, чтобы они были объединены AND).

Для выполнения случая и я бы либо создал специальную именованную область с построенными условиями OR, либо использовал объединение для создать уникальный набор, например:

User.big_haired | User.plays_guitar
0
ответ дан 3 November 2019 в 07:48
поделиться
2
ответ дан 3 November 2019 в 07:48
поделиться
Другие вопросы по тегам:

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