2012-10-10 2 views
1

мое приложение Rails 3 + Delayed Job (2.1.4) + Devise (2.1.2) + Devise Async (0.3.1).Devise Async не записывает attr_accessor в Delayed Job?

Я использую эту установку, чтобы все электронные письма отправили async. Это прекрасно работает для новых пользователей, но в моем пригласить потока я сделать следующее:

added_user = User.new(:email => email, :added_by => current_user, :added_to => @group) 

Проблема здесь состоит в том, что added_by и added_to виртуальные атрибуты (attr_accessor). И когда Delayed Job Async вставляет задания в Delayed Job, виртуальных атрибутов там нет, и возникают ошибки.

Любые идеи о том, как справиться с этой ситуацией? Является ли это заданием с задержкой или проблемой асинхронного вызова? Я не совсем уверен, с чего начать, а поисковые запросы Google не помогли.

Благодаря

+0

Любые идеи? Спасибо – AnApprentice

ответ

0

Единственное, что я могу думать о том, что вы не сделали added_by и added_to доступны через массовое назначение. В более поздних версиях Rails у вас может возникнуть ошибка MassAssignmentSecurity, но это может быть недоступно или включено в вашем случае. Попробуйте добавить следующие строки в модель:

attr_accessible :added_by, :added_to 
+0

Спасибо, но они есть. Все это работает, когда я использую devise-async – AnApprentice

+0

Является ли конкретный объект, который вы создаете, используется для задания фона? –

+0

Нет, это проблема с devise-async, это просто сохранение user.id, а затем выборка пользовательской записи в DJ – AnApprentice

0

DelayedJob имеет значительные проблемы с атрибутом аксессорами (так что я очень сомневаюсь, что ваша проблема связана с Devise). По сути, методы encode_with и init_with ActiveRecord :: Base необходимо переопределить, чтобы включить атрибут-аксессоры при использовании DelayedJob - по крайней мере, если вы не используете обычай. Я бы предложил посмотреть here за идею о том, как обойти эту проблему.

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