私はRailsに慣れていないので、問題に直面しています。私は持っている
モデル
Model1
id: integer
account_id: integer
Account
id: integer
次のようにModel1で検証があります。
モデルコード:
validates :account_id, :inclusion => { :in => Account.find(:all).collect(&:id)}
View Code のドロップダウンを使用します。
<%= f.select :account_id, @accounts.collect {|acc| [acc.name, acc.id]}, {:prompt => 'Select Account' }, { :selected => @defaultaccount, :class => 'selectwidth' } %>
フォームを送信する前に、クライアント側の検証を使用してフィールドを検証しています。Heroku を使用してアプリをデプロイしています。
最初にアカウントを作成してから、フォームから新しいモデルを作成しようとします1。ドロップダウンには、私が持っているすべてのアカウントが表示されます。次に、ドロップダウンから作成したアカウントを選択すると、クライアント側の検証が有効になり、アカウントが存在しないかのように validates_inclusion_of のエラー メッセージである「有効ではありません」と表示されます。何が起こっているのかわからず、データベースを確認したところ、アカウントが作成されました。これが、最初にドロップダウンにアカウントが読み込まれる理由です。
validates_inclusion_of を rails 3 validates :account_id, :inclusion => { :in => {} } 構文に変更し、再デプロイします。ここで、新しい model1 フォームでそのアカウントを選択しようとしましたが、ドロップ ダウンには、以前に作成されたアカウントのエラーは表示されません。
それで、新しいアカウントを作成し、新しいアカウント用に新しいモデル1を作成しようとしましたが、検証の失敗が再浮上しました。
キャッシュの問題のようなものですか?クライアント側の検証の問題ですか? 問題が何であるかを見つけようとできる限りのことをしましたが、何が起こっているのかについてのアイデアがありません。
そのため、アカウントを作成するたびに、アプリケーションの動作を強制終了する再デプロイが期待されます。この問題を解決するにはどうすればよいですか? 何が起こっているのかよくわかりません。
Heroku にデプロイされた Config、Rails 3 はアセット パイプラインを使用します
Gems: クライアント側の検証 カミナリ