如果我有一個ActiveRecord模型如下Ruby類評價,validates_inclusion_of與動態數據
class Foo < ActiveRecord::Base
validates_inclusion_of :value, :in => self.allowed_types
def self.allowed_types
# some code that returns an enumerable
end
end
因爲allowed_types方法尚未在其中的驗證評估時定義該不工作。我所能想到的所有修復基本上都是圍繞着驗證移動方法定義,以便在需要時可用。我認爲這可能是一個比任何代碼風格問題更多的東西(我希望我所有的驗證都在模型頂部和底部),但是我覺得應該有一些解決方案,涉及初始模型加載的懶惰評估?
是我想要做甚至可能的嗎?我應該只是在驗證上面定義方法,還是有更好的驗證解決方案來達到我想要的效果。
@eightbitraptor ...嘗試':在=> Foo.allowed_types',而不是':在=> self.allowed_types' ...東陽我想'self'將被引用對象'Foo'而不是'Foo' – rubyprince