当我在轨道上使用ruby来学习如何测试代码时使用rails rspec
,有些代码我无法理解,这里是代码,它只是一个关于停车计量表测试的代码。 / p>
db/migrate/xxxxx_create_parking.rb
class CreateParkings < ActiveRecord::Migration[5.0]
def change
create_table :parkings do |t|
t.string :parking_type #guest, short-term, long-term
t.datetime :start_at
t.datetime :end_at
t.integer :amount
t.integer :user_id, index: true
app/spec/models/parking_spec.rb
require 'rails_helper'
RSpec.describe Parking, type: :model do
#pending "add some examples to (or delete) #{__FILE__}"
describe ".validate_end_at_with_amount" do
it "is invalid without amount" do
parking = Parking.new( :parking_type => "guest",
:start_at => Time.now - 6.hours,
:end_at => Time.now)
expect(parking).to_not be_valid
end
it "is invalid without end_at" do
parking = Parking.new( :parking_type => "guest",
:start_at => Time.now - 6.hours,
:amount => 999)
expect(parking).to_not be_valid
end
end
end
那么,to_not be_valid
和t.integer :user_id, index: true
的意思是什么?感谢。
答案 0 :(得分:0)
对于be_valid
,它正在测试新记录的ActiveModel::Validations
,它就像valid?
函数一样,将not_to
表示我插入此记录parking = Parking.new( :parking_type => "guest",:start_at => Time.now - 6.hours,:amount => 999)
时end_at
1}}没有t.integer :user_id
它不应该工作,通过这个你检查你的代码是否适用于无效的情况,这是一个关于be_valid的好资源。
ActiveRecord
的这是user_id
中的一个命令,它在名为index: true
的表中添加一个新的列/字段,
user_id
在其上放置一个索引(这是数据库世界中的一个概念,它有助于在更短的时间内检索记录),"Grade for " << assignmentName[x] << setw[y] << grade(z)
通常用作外键index。