1

私のモデルはこのように見えますが、派手なものは何もありません。

# Table name: invoices
#
#  id               :integer         not null, primary key
#  total            :float
#  discount         :float
#  description      :text
#  created_at       :datetime        not null
#  updated_at       :datetime        not null
#  company_id       :integer
#  secret           :string(255)
#  address_id       :integer
#  price_per_credit :float
#  paid             :boolean

サーバーとRailsコンソールの両方でこのインスタンスを作成できます。これらのインスタンスを呼び出すとtrueが返さ.valid?れます(テスト目的ですべての検証をオフにしました)。

1.9.3p194 :001 > i = Invoice.new
 => #<Invoice id: nil, total: nil, discount: nil, description: nil, created_at: nil, updated_at: nil, company_id: nil, secret: nil, address_id: nil, price_per_credit: nil, paid: nil> 
1.9.3p194 :002 > i.valid?
 => true

ただし、何らかの理由で、これらのインスタンスをデータベースに保存できません。

1.9.3p194 :003 > i.save
   (0.3ms)  begin transaction
   (0.1ms)  rollback transaction
 => false

ローカルでsqliteを使用しており、本番サーバーはMySQLを実行していますが、どちらもこの動作を示しています。これをデバッグするために何をすべきかよくわかりません。私は走りましたdb:migrate、そして私の宝石は最新です。どうすればこれをすすめることができますか?

4

1 に答える 1

8

before_createfalse を返すフィルターがあり、保存プロセスが停止することが判明しました。これを解決するために、次nilのようにクラスに追加しました。

# BEFORE:
def set_paid
    self.paid = false
end

# AFTER:
def set_paid
    self.paid = false
    nil
end

これが他の人にも役立つことを願っています!

于 2012-07-02T09:38:29.987 に答える