特定のモデルの属性 (つまり、お金) のデータ型を変更する際に問題があります。Money は整数でした -- 移行を使用して、精度 5 とスケール 2 の 10 進数に変更しようとしています。移行を実行すると、コンソールですべてが正常に表示されます (つまり、移行が機能したように見えます)。 、しかし、Web アプリで値を 10 進数に変更しようとすると、「無効な値」というメッセージが表示されます。なんらかの理由でエラーがクライアント側で発生しているように見えます (それは js ポップアップです)? ただし、クライアント側の検証は含めませんでした。私が取る手順は次のとおりです。
まず、移行を生成します。
>rails generate migration change_data_type_for_user_money
次に、移行を編集します。外観は次のとおりです。
class ChangeDataTypeForUserMoney < ActiveRecord::Migration
def self.up
change_table :users do |t|
t.change :money, :decimal, :precision => 5, :scale => 2
end
end
def self.down
change_table :users do |t|
t.change :money, :decimal, :precision => 5, :scale => 2
end
end
end
次に、「rake db:migrate」を実行します
奇妙なのは、小数点以下のゼロが表示され、問題がないことです (たとえば、100.00 は問題ありませんが、エラーが発生した場合は 100.50 です)。
また、モデルは次のとおりです。
class User < ActiveRecord::Base
attr_accessible :money, :name
validates :money, :name, :presence => true
validates :money, :numericality => true
end
そして _from ビュー:
<%= form_for(@user) do |f| %>
<% if @user.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</h2>
<ul>
<% @user.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :money %><br />
$<%= f.number_field :money %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
何かご意見は?よろしくお願いします。