QA@IT

Rubyのgem pry-railsでモデルをnewするとエラー

2547 PV

お世話になります。
pry-railsのコンソールと、通常のconsoleで挙動が違うようです。
pry-railsに問題があるのかなと思ったのですが、判断できません。

ご教授のほどよろしくお願いいたします。

※ 投稿中に気づきました
エラーの原因はモデルのテーブルにopenという列がある場合に発生するようです。
これはpry-railsのバグと考えてもよいのでしょうか?
確信が持てればIssueを投稿してみたいのですが(初心者なので確信がなく)

環境は

  • Rails 4.0.1
  • Ruby 2.0.0-p247
  • gem:pry-rails (0.3.2)

エラー内容

4.0.1@2.0.0 (main)> Account.new
Hirb Error: wrong number of arguments (0 for 1+)
    /Users/kntmrkm/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/open-uri.rb:28:in `open'
    /private/var/www/html/prj/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb/helpers/object_table.rb:10:in `block (2 levels) in render'
    /private/var/www/html/prj/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb/helpers/object_table.rb:10:in `each'

Gemfileからpry-railsを除きbundleし、Railsの通常のコンソール(rails console)からAccount.newするとエラーは出ません。

Accountモデル

他のモデルではCommonを継承してもnewできる。
Accountモデルにはopenという列があります。

class Account < Common
  after_create do
    create_configuration
    create_sequence
  end

  has_one :configuration, dependent: :destroy
  has_one :sequence, dependent: :destroy

  validates :name, presence: true, length: { maximum: 80 }
  validates :email, presence: true
  validates :email, length: { maximum: 50 }, format: { with: VALID_EMAIL_REGEX },
   uniqueness: { case_sensitive: false }, allow_blank: true

  private
    def create_configuration
      self.create_configuration!
    end

    def create_sequence
      self.create_sequence!
    end
end

Commonモデル

class Common < ActiveRecord::Base
  self.abstract_class = true
  before_save { self.email = email.downcase if self.email }

  private
    def create_url_token
      self.url_token = SecureRandom.urlsafe_base64 if self.url_token
    end

end

回答

解決はしていませんが、gemを介しての問題ですので、そういうものだということでクローズします。

ちなみに、Rails4.0.2で個人的に遭遇した列名トラブルは

  • open
  • type

です。怪しいのは選ばないようにします。

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。