2017-06-22 50 views
0

我有一個序列化程序正在開始獲取數據庫查詢,但每次調用序列化程序時都不需要全部查詢。我想傳遞一個URL參數給序列化程序,讓它知道是否需要某個關聯。然而,我似乎無法找到一種方法來呼叫options,除非我在一個方法中。我是否以這種錯誤的方式去做?基本例如:有沒有辦法在Rails ActiveSerializer的實例方法之外使用`options`?

class UserSerializer < ActiveModel::Serializer has_many :notes, serializer: UserNotesSerializer if options['include_notes'] end

編輯發回的錯誤是:

*** NameError Exception: undefined local variable or method `options' for UserSerializer

第二個編輯:@options將返回nil出於某種原因,阻止我訪問選項哈希值。這是一個已知的問題嗎?使用版本0.8.1

是這樣的可能嗎?

+0

嘗試'@options [:include_notes]' – Pavan

回答

1

@options在類級別不存在。 Ruby首先評估您的序列化器類和方法定義。然後你創建一個選項散列,當你渲染的時候,它被傳遞給你的序列化類的新實例。在更高版本的ActiveModel :: Serializer中,訪問這些選項的方法實際上被命名爲instance_options

但是,你仍然可以完成你想要的。最簡單的方法是在渲染時使用except:選項。當您不需要關聯時,您可以通過except: [:notes]而不是通過include_notes: false

相關問題