2017-10-18 120 views
-1

這種交付模式的創建應該被連接到一個用戶後,開始工作......錯誤的Rails 5 <class>必須存在

class Delivery < ApplicationRecord 
    enum kind_of: { package: 0, facturation: 1 } 
    belongs_to :sender, class_name: 'User' 
    has_many :orders, foreign_key: "package_delivery_id" 
    has_many :invoices, foreign_key: "invoices_delivery_id" 
    has_one :address 
    has_many :runs, dependent: :destroy 
    accepts_nested_attributes_for :address 
end 

...然而,在我的規格

require 'rails_helper' 

describe OrderPolicy do 
    context 'toegang' do 
    subject { OrderPolicy.new(user, order) } 
    let(:user) { create :user } 
    let(:delivery) { create :delivery, sender: user } 
    let(:order) { create :order, customer: user, status: 'open', package_delivery: delivery } 
    let!(:selection) { create(:selection, :product_name   => 'Honingpot', 
              :product_quantity  => 4, 
              :product_price  => '5,00', 
              :product_mail_weight => '460', 
              :product_sales_tax => 6, 
              :order    => order) } 

... 

和也是這一個:

require 'rails_helper' 

describe DeliveryPolicy do 
    context 'toegang' do 
    subject { DeliveryPolicy.new(user, delivery) } 
    let(:user) { create :user } 
    let(:delivery) { FactoryGirl.create :delivery } 

... 

...我得到的錯誤:

交付必須存在

雖然我有用戶在那裏。 (optional: true也沒有工作,順便說一句)。

奇怪的是,我需要在控制檯使Delivery.create工作正在添加在sender: ...

回答

0

「這個交付模型的創建應該在連接到用戶後才能工作......」 - 這就是問題所在?然後,你可以這樣做:

class Delivery < ApplicationRecord 
    enum kind_of: { package: 0, facturation: 1 } 
    belongs_to :sender, class_name: 'User', required: false 

由於Rails5,belongs_to默認添加required: true

相關問題