Rails 3:Mongoid验证问题

时间:2012-08-17 03:06:07

标签: ruby-on-rails ruby-on-rails-3 validation activerecord activemodel

使用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

但我似乎无法按照我想要的方式运行。任何反馈都会非常感激。

1 个答案:

答案 0 :(得分:1)

您的请求模型看起来很好。但是Listing.all_codes需要返回一个只有代码的数组。这样:

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

  def self.all_codes
    only(:code).map(&:code)
  end
end