2016-03-18 1 views
0

Я ищу способ воспроизвести поведение none в Sequel. До сих пор мне не удалось найти способ создания набора данных или набора данных, например, без привязки к таблице.Рубиновый сиквел, эквивалентный ActiveRecord none

На данный момент я просто возвращаю enum, но я хотел бы сохранить API-интерфейс набора данных, чтобы не сломать цепочку.

E.g.

class User < Sequel::Model 
end 

User.none # => instance of dataset 
+0

Вы могли бы использовать что-то вроде RSpec :: Instance Double для создания фиктивного объекта, и использовать его в производстве, а не для тестирования. Вероятно, это довольно дорогостоящий способ. – jjk

+0

Интересно! Да, я бы предпочел «не требовать» Rspec в производстве, если это возможно. –

+0

Может быть, немая идея, но все-таки вы пытались использовать 'Sequel :: Dataset.new' для этой цели? –

ответ

1

Sequel имеет расширение null_dataset для этого: http://sequel.jeremyevans.net/rdoc-plugins/files/lib/sequel/extensions/null_dataset_rb.html

+0

Отлично! Я попытаюсь представить PR, добавив некоторое упоминание об этом в раздел 'active_record' продолжения docs. Мой google-fu, возможно, был слабым, но я попытался найти немного, но безрезультатно. –

+0

Я нахожу использование этого, чтобы быть довольно неудобным. Мне нужно сказать 'DB [: users] .nullify' вместо' User.nullify' или 'User.dataset.nullify'. Я бы хотел избежать захвата базы данных, чтобы вернуть нулевой набор данных. Это может быть полезным пояснением для тела вашего ответа, или я могу задать отдельный вопрос. –

+0

Предполагая, что вы создали 'DB.extension: null_dataset' перед созданием класса User, тогда вам просто нужно выполнить' def User.nullify; dataset.nullify end' –

Смежные вопросы