如何在rails中访问数据库的内容?

时间:2014-09-29 02:58:43

标签: ruby-on-rails sqlite rspec

好的,所以我有模型,我在我的种子中填充了我的sqlite数据库。这里是代码

〜/元素周期表/分贝/ seeds.rb

# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
#
# Examples:
#
#   cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }])
#   Mayor.create(name: 'Emanuel', city: cities.first)
File.open("pt-data3.csv", 'r').each_line do |line|
    temp = line.split(',')
    Element.create(proton: temp[0].strip, symbol: temp[1].strip, name: temp[2].strip, mass: temp[3].strip)
end

然后我尝试在我的rspec中访问它并且我一直都是nil,这是我的rspec

〜/元素周期表/规格/模型/ element_spec.rb

require 'rails_helper'

RSpec.describe Element, :type => :model do
    it "should contain the right elements" do
        expect(Element.find_by(proton: 1)).to include("Hydrogen")
    end
end

然而,无论我放入什么,Element.find_by都会保持返回nil。我的数据库是填充的,因为我检查了。当我在Element.find_byrails console时,它的工作正常。我可以在我的rails控制台中正确获取所有元素,但是当我将它放在我的rails app Element.find_by中的任何位置时,总是返回nil

这里也是我的模型类,如果它有任何相关性

〜/元素周期表/应用/模型/ element.rb

class Element < ActiveRecord::Base
end

1 个答案:

答案 0 :(得分:1)

Rails为生产,开发和测试维护不同的数据库。这意味着您认为应该存在的数据存在于开发数据库中。如果要在测试中访问数据,则需要将其保存在测试环境中。考虑使用FactoryGirl在测试数据库中创建对象。