8
我有一個非常通用的驗證器,我想傳遞它的參數。Rails/ActiveModel傳遞參數到EachValidator
下面是一個例子模型:
class User
include Mongoid::Document
field :order_type
has_many :orders, inverse_of :user
validates: orders, generic: true #i want to pass argument (order_type)
field :task_type
has_many :tasks, inverse_of :user
validates: tasks, generic: true #i want to pass argument (task_type)
end
和實施例驗證:
class GenericValidator < ActiveModel::EachValidator
def validate_each(object, attribute, value)
if some_validation?(object)
object.errors[attribute] << (options[:message] || "is not formatted properly")
end
end
end
是否有任何方式將參數傳遞給校驗器取決於它正在驗證哪個字段?
感謝
什麼是你想通過這樣做是爲了達到什麼目的?這並不是我給出Rails API的最佳方式。 – dpassage
在我的原始代碼中,我想查找模型中是否存在循環依賴項。 ModelA有許多模型B.模型B有一個模型A.我想驗證模型A沒有循環返回到它自己。事情是,我有兩個需要驗證週期的不同關係,它們之間的驗證器之間存在非常小的差異。我想知道是否可以通過傳遞哪些字段來搜索循環,而不是重寫相同的循環邏輯和驗證器。 – GTDev
我認爲你可能會更好使用子類化,而不是參數化。 – dpassage