使用Mongoid,我试图在提交表单上验证:代码输入,以确保它们使用已存储在数据库中的正确代码。大约有2000多个代码,因此辅助方法数组集合是不可行的。
这样做的最佳方式是什么?
我正在考虑进行包含验证,如下所示:
class Request
include Mongoid::Document
field :code, type: String
validates :code, :presence => true,
:inclusion => { :in => proc { Listing.all_codes } }
end
然后是包含所有存储代码的模型,如下所示:
class Listing
include Mongoid::Document
field :code, type: String
def self.all_codes
where(:code => exists?) # <--- this is broken
end
end
但我似乎无法按照我想要的方式运行。任何反馈都会非常感激。
答案 0 :(得分:1)
您的请求模型看起来很好。但是Listing.all_codes需要返回一个只有代码的数组。这样:
class Listing
include Mongoid::Document
field :code, type: String
def self.all_codes
only(:code).map(&:code)
end
end