0

使用 Mongoid,我正在尝试验证提交表单上的 :code 输入,以确保他们使用的是已存储在数据库中的正确代码。大约有 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

但我似乎无法让它以我想要的方式运行。任何反馈将不胜感激。

4

1 回答 1

1

您的请求模型看起来不错。但是 Listing.all_codes 需要返回一个只有代码的数组。所以:

class Listing
  include Mongoid::Document
  field :code, type: String 

  def self.all_codes
    only(:code).map(&:code)
  end
end
于 2012-08-17T03:36:48.323 回答