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

Request モデルは問題ないようです。ただし、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 に答える