私はRailsに慣れていますが、私は問題に直面しています。私が持っているRails 3のvalidates_inclusion_ofが期待どおりに機能しない
モデル
Model1
id: integer
account_id: integer
Account
id: integer
次のように私はMODEL1における検証を持って、
モデルのコード:
:validates :account_id, :inclusion => { :in => Account.find(:all).collect(&:id)}
私は ビューコードのドロップダウンを使用します
<%= f.select :account_id, @accounts.collect {|acc| [acc.name, acc.id]}, {:prompt => 'Select Account' }, { :selected => @defaultaccount, :class => 'selectwidth' } %>
フォームを送信する前に、クライアント側の検証を使用してフィールドの検証を行っています。私はHerokuを使って私のアプリを展開しています。
私は最初にアカウントを作成してから、私は新しいモデルを作成しようとします。ドロップダウンには、私が所有しているすべてのアカウントが入力されます。次に、ドロップダウンから作成したアカウントを選択し、クライアント側の検証が有効になり、「有効ではない」と表示されます。これは、アカウントが存在しないかのようにvalidates_inclusion_ofのエラーメッセージです。 ishappeningが何なのかわかりませんし、データベースをチェックして、アカウントが作成されているので、最初にドロップダウンにアカウントが読み込まれています。
validates_inclusion_ofをrails 3に変更すると、account_id、:inclusion => {:in => {}}の構文が検証され、再デプロイされます。今、私は新しいmodel1フォームでそのアカウントを選択しようとしました。ドロップダウンは以前に作成されたアカウントのエラーを表示しません。
それで、私は新しいアカウントを作成し、新しいアカウントに対して新しいモデル1を作成しようとしましたが、検証の失敗が再現されています。
そのようなキャッシュの問題?それはクライアント側のバリデーションの問題ですか?私は試してみて問題が何であるかを知るためにすべてをやったが、何が起きているのかについてのアイデアはない。
私はアカウントを作成するたびに、再デプロイが実行され、アプリケーションが何をするのかが分かりません。どうすればこの問題を取り除くことができますか?何が起こっているのかは分かりません。
Configを、 Herokuの に配備Railsの3 アセットパイプラインを使用しています
宝石: クライアント側検証 雷
私は単純化のためだけに検証クエリの全体のロジックを与えていません:)評価についての頭のおかげで、ありがとう。 – Baaju
ああ。検証とスコープによる評価の問題は、時にはあなたを怒らせることのできるものです:) – lucapette