加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 为什么在Rails 5.0中未定义方法column_types?

发布时间:2020-12-17 03:42:35 所属栏目:百科 来源:网络整理
导读:我正在为一个类做一个赋值,它在rspec测试中使用column_types方法. it "User database structure in place" do expect(User.column_names).to include "password_digest","username" expect(User.column_types["username"].type).to eq :string expect(User.c
我正在为一个类做一个赋值,它在rspec测试中使用column_types方法.

it "User database structure in place" do
        expect(User.column_names).to include "password_digest","username"
        expect(User.column_types["username"].type).to eq :string
        expect(User.column_types["password_digest"].type).to eq :string
        expect(User.column_types["created_at"].type).to eq :datetime
        expect(User.column_types["updated_at"].type).to eq :datetime

结束

错误:当我在命令行中运行rpsec时.
Rails 5.0
Ubuntu 14.10

失败/错误:期望(User.column_types [“username”].type).to eq:string

NoMethodError:
   undefined method `column_types' for #<Class:0x000000053a0188>
   Did you mean?  columns
                  column_names
 # ./spec/assignment_spec.rb:67:in `block (5 levels) in <top (required)>'
 # ./spec/assignment_spec.rb:14:in `block (2 levels) in <top (required)>'

解决方法

该方法在 this commit中被删除.找到它并不容易.

但是,原因是没有记录,这是因为方法本身没有记录(也许它只是供内部使用).

有关方法,请参见this comment:nodoc:

def column_types # :nodoc:
    @column_types ||= columns_hash.transform_values(&:cast_type).tap do |h|
      h.default = Type::Value.new
    end
  end

您可以阅读commit’s描述以了解原因,也可以看看是否还有其他可以做的事情.

编辑

看看these lines也许attributes_types或columns_hash可以解决你的问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读