У меня есть приложение, в котором attr_accessor используется для хранения временных данных для модели, которая будет передана команде rake. Видя, что для этих атрибутов нет поля базы данных, и они не вычисляются из данных базы данных, будут ли данные attr_accessor сохраняться и быть доступными для задачи рейка? Что произойдет, если мне нужно перезапустить сервер - потеряются ли данные, если они не сохранены в базе данных? Или, чтобы избавиться от этого, мне нужно либо сохранить временный файл, либо поле базы данных?Сохранение атрибута attr_accessor не-DB в Rails
ответ
Я предполагаю, что вы спрашиваете, будут ли доступны данные, хранящиеся в атрибутах объектов ActiveRecord, связанных с веб-запросами, при доступе к ним через задачу Rake?
Нет. Они не будут. Эти данные даже не будут доступны для следующего веб-запроса. Эти данные даже не будут присутствовать, если вы дважды загрузите одну и ту же запись.
class Thing < ActiveRecord::Base
attr_accessor :data
end
#try this in script/console
thing = Thing.find(:first)
thing.data = "Something"
thing = Thing.find(:first)
puts thing.data
-> nil
Конечно, это будет потеряно, где, по вашему мнению, данные идут, когда он умирает? К данным h (e) aven, откуда он всегда может вернуться?
Я хотел бы знать, для чего нужны данные, но окончательный ответ, вероятно, состоит в том, что данные принадлежат к db, если только это большие двоичные данные, такие как изображения, где вы должны сохранить их в файловой системе.
Это зависит от того, как вы передаете свои данные в задачу рейка и почему. Если вы пытаетесь выполнить работу вне диапазона с запросом, а это означает, что пользователь не дожидается до полного завершения, я рекомендую ознакомиться с превосходным скринкастом Райана здесь http://railscasts.com/episodes/128-starling-and-workling, чтобы узнать о очередях заданий.
Если у вас есть какая-то другая экзотическая причина, вы должны использовать подобный грабли, вы можете передать данные в качестве параметров командной строки. Это зависит от того, сколько данных и их сложность вам нужно пройти, поскольку это может быстро выйти из-под контроля.
Используя пример Даниила сверху:
вещь = Thing.find (: первый) thing.data = "Что-то"
rake myraketask thing_id=#{thing.id} data=#{thing.data}
- 1. Rails вложенного атрибута не сохранение
- 2. Использование attr_accessor in Rails
- 3. Обновление Rails 4 - attr_accessor
- 4. Проверка attr_accessor, Rails 4
- 5. Где использовать attr_accessor в Rails?
- 6. Rails Touch and Return attr_accessor
- 7. Почему необходим атрибут attr_accessor в Rails?
- 8. attr_accessor breaks 2 моих методов в Rails
- 9. Rails 4 косяка массы назначить attr_accessor метод
- 10. Сохранение атрибута атрибута флага в файле настроек
- 11. сохранение видимости при выполнении alias_method_chain на attr_accessor в Ruby 1.9
- 12. Сохранение атрибута сеанса в списке
- 13. Сохранение только одного атрибута
- 14. Как хранить коллекцию для атрибута в Rails?
- 15. Сохранение атрибута whitespace
- 16. Проблема с attr_accessor в этой форме контакта в Rails 4?
- 17. Ограничение атрибута в Rails
- 18. Сохранение модели после обновления атрибута
- 19. attr_accessor через несколько классов?
- 20. Rails - Сохранение объектов с NOT NULL ограничения
- 21. Attr_accessor в Node Class
- 22. Rails attr_accessor обнаруживается после передачи в качестве аргумента через .build()
- 23. attr_accessor и attr_reader не работают в Rails 4
- 24. Сетчатая часть attr_accessor, похоже, не работает в контроллере Rails
- 25. Rails attr_accessor атрибут родительской модели, доступной в детей
- 26. Сохранение видеофайлов в Rails
- 27. Сохранение периодичности в Rails
- 28. Сохранение вложенного хэша в Ruby on Rails
- 29. Массив массива кэша с attr_accessor?
- 30. Специальная проверка Rails на 3 атрибута
Если `data` есть двоеточие перед ним? Что такое различие? – 2012-10-02 18:01:26