【问题标题】:Rails Arel unit test errorRails Arel 单元测试错误
【发布时间】:2015-02-24 15:06:03
【问题描述】:

我有以下错误:

ERROR["test_character_should_be_valid", CharacterTest, 0.214787]
test_character_should_be_valid#CharacterTest (0.21s)
NoMethodError:         NoMethodError: undefined method `val' for "$1":Arel::Nodes::BindParam
app/models/user.rb:11:in `block in <class:User>'
test/models/character_test.rb:8:in `setup'

来自以下测试:test/models/character_test.rb:

    require 'test_helper'

    class CharacterTest < ActiveSupport::TestCase

      def setup
        @user = User.new(name: "Example User", email: "user@example.com", callsign: "example",
                         password: "foobar", password_confirmation: "foobar")
        @user.save
        @character = @user.character
      end

      test "character should be valid" do
        assert @character.valid?
      end

    end # CharacterTest

在gemfile中:

gem 'arel', '6.0.0.beta2'

字符.rb:

class Character < ActiveRecord::Base
  belongs_to :sociable, polymorphic: true
end

user.rb:

class User < ActiveRecord::Base

  has_one  :character, as: :sociable

  before_validation do
    self.create_character unless character # line 11
  end
  .
  .
end

我找不到有关此特定 arel 错误的任何信息。我的 arel gem 是 6.0.0.beta2,它似乎可以解决其他问题(如here)。有没有人见过这样的东西?

【问题讨论】:

    标签: ruby-on-rails unit-testing arel


    【解决方案1】:

    事实证明这不是 Arel 错误 - 这是因为列sociable_id 和 socialable_type 未在架构中定义。我的愚蠢错误。由于缺少外键,Arel 引发了异常。但是,这里的 Arel 有一个改进的错误消息: https://github.com/rails/rails/commit/78bd18a90992e3da767cfe492f1bc5d63077da8a

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多