2012-10-10 67 views
1

我的應用程序是Rails 3 +延遲作業(2.1.4)+設計(2.1.2)+設計異步(0.3.1)。設計異步不記錄attr_accessor在延遲作業?

我正在使用此設計安裝程序使所有設計電子郵件發送異步。這工作得很好了新用戶,但在我的邀請流我做到以下幾點:

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

這裏的問題是,added_by和added_to是虛擬屬性(attr_accessor)。當「延遲作業異步」在「延遲作業」中插入作業時,虛擬屬性不存在併發生錯誤。

有關如何處理這種情況的任何想法?這是延遲工作問題還是設計異步問題?我不完全確定從哪裏開始,谷歌搜索沒有幫助。

感謝

+0

任何想法?謝謝 – AnApprentice

回答

0

我能想到的唯一的事情是,你還沒有做出added_by,並通過大規模分配added_to訪問。在更高版本的Rails中,您可能會引發MassAssignmentSecurity錯誤,但在您的情況下可能無法使用或啓用此錯誤。嘗試添加以下到您的模型:

attr_accessible :added_by, :added_to 
+0

謝謝,但他們在那裏。當我使用devise-async – AnApprentice

+0

時,所有這些工作都期望得到實現的確切對象是否可用於後臺作業? –

+0

不,這是設計異步的問題,它只是存儲user.id,然後在DJ中獲取用戶記錄 – AnApprentice

0

DelayedJob與屬性訪問器顯著的問題(所以我很懷疑你的問題與設計做的)。實質上,ActiveRecord :: Base的encode_with和init_with方法需要在使用DelayedJob時重寫,以包含屬性訪問器 - 至少除非使用自定義。我會建議看看here瞭解如何解決此問題的想法。