2012-02-06 7 views
0

私は2つのモデルがあります:Herokuの上のデータベース・エラーを挿入しかし、ローカルでのActiveRecordを働いた:: StatementInvalid

class User < ActiveRecord::Base 
    has_many :micro_posts, :dependent => :destroy 
    .. 
    def add_post(post) 
    self.micro_posts << post 
    end 

class MicroPost < ActiveRecord::Base 
    belongs_to :user 
    ... 

と移行:

class CreateMicroPosts < <ActiveRecord::Migration 
    def change 
    create_table :micro_posts do |t| 
    ... 

そして、私はHerokuのサーバ上add_postと呼ばれるが、私はエラーが発生しました:

2012-02-06T02:59:58+00:00 app[web.1]: ActiveRecord::StatementInvalid (ArgumentError: wrong number of arguments (1 for 0): INSERT INTO "micro_posts" ("created_at", "description", "pub_date", "tag", "title", "updated_at", "url", "user_id") VALUES ($1, $2, $3, $4, $5, $6, $7, $8) RETURNING "id"): 
2012-02-06T02:59:58+00:00 app[web.1]: app/models/user.rb:25:in `add_post' 

しかし、有線のものは、私のコンピュータで動作します。マイOS情報:

ubuntu 10.04 
ruby 1.9.3p0 
rails 3.1.3 
postgresql 8.4.10 

ありがとうございます。

+0

PS、item.pubDateはすなわち、コンソールに私はそれを印刷することができ、間違っていません。しかし、私は、Herokuが9.0.4(または9.1)で動作している場所でPostgreSQL 8.4を実行していることに注意してください。 Postgresをアップグレードして、エラーをローカルに再現できるかどうか確認してください。これにより、より詳細なロギングが可能になります。 – Ariejan

+0

ありがとうございます。私はそれをアップグレードしてみます。 –

+0

NO。 postgresqlを9.1.2(ソースからビルド)にアップグレードし、ローカルで動作しました。 –

答えて

1

私はこの問題を解決しますが、なぜか分かりません。

herokuコンソール(heroku実行コンソール)で試してみた後、add_postメソッドでエラーが発生していないことがわかりました。コードはここに示したとおり、MicroPostは名前がPUB_DATE日時欄があり、このフィールドは、RSSアイテムpubDateのから来て、このコードがエラーにつながる

post = MicroPost.new(..., :pub_date => rss_item.pubDate) 

:実は、それは私のMicroPost.newによって引き起こされました(Herokuの上で)以下を示しています。いくつかのグーグルの後、私は解決策を見つけた

irb(main):020:0> post=MicroPost.new(:description=>"none", :url=>'url',:title=>"title",:pub_date=>item.pubDate,:tag=>"tag") 
ArgumentError: wrong number of arguments (1 for 0) 
from /usr/local/lib/ruby/1.9.1/time.rb:454:in `rfc2822' 
from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.1.3/lib/active_support/time_with_zone.rb:168:in `to_s' 
from /app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.1.3/lib/active_record/base.rb:1785:in `attribute_for_inspect' 

ます。http://www.spacebabies.nl/2008/06/16/rails-2-and-rss-parsing-gives -weird-errors/

それはRails2ですが、それでも私のために働きます。 item.pubDateをitem.pubDate.to_sに変更する

また、ここで何が起こったのか説明できますか?私は一目見ただけで、あなたのコードに何かを見ることができない

item.pubDate.class => Time 
関連する問題