0

我有一个模型来存放东西。当布尔属性 (action_type) 的值为 false 时,PostgreSQL 出于某种原因回滚 INSERT 查询。

create_table :process_flows do |t|
      t.integer :campaign_id
      t.integer :position
      t.string :description
      t.string :typestr
      t.float :action_number
      t.boolean :action_type
      t.string :action_on_donation
      t.integer :created_by
      t.integer :updated_by
      t.timestamps
end

我的视图文件如下所示:

<%= form_for [@org, @campaign, @process_flow] do |f| %>
        <%= render "shared/errors", :target => @process_flow %>
        <div class="field">
            <%= f.label :description %><br />
            <%= f.text_field :description %>
        </div>
        <div class="field">
            <%= f.label :typestr, 'Type of organization' %><br /><br />
            <%= f.select :typestr, options_for_select([["Point of collection", "PC", :selected => true], ["Your Organization", "O"], ["Bank / Payment Gateway", "B"], ["Intermediary", "I"], ["Recipient Charity Project", "R"]]) %><br /><br />
        </div>
        <%= f.select :action_on_donation, options_for_select([["100% (Unchanged)", "U", :selected => true], ["Increase", "A"], ["Decrease", "S"]]) %>
        the donation 
        by
        <%= f.text_field :action_number, :style=>"width: 30px;", :value => '0' %>
        <%= f.select :action_type, options_for_select([["Percent", '1', :selected => true], ["Flat Amount", '0']]) %>
        <div>
            <%= f.submit 'Add', :class=>'button' %>
        </div>
    <% end %>
4

1 回答 1

0

这可能发生在许多平台上。

最典型的原因是缺少 COMMIT。PostgreSQL 将在连接关闭时回滚打开的事务。

另一种可能性是您有一个代码分支,即使您期望它执行,它也没有执行。

在这些情况下,重要的是通过遍历代码来调试代码(这里没有足够的代码可以继续)并确定是否发送了插入以及是否曾经发出过提交。

于 2013-03-22T01:51:56.180 回答