여기 내 시나리오가 있습니다 :팩토리 소녀가 단일 테이블 상속을 사용할 때 존재하지 않는 테이블에 액세스하려고 시도합니다.
데이터베이스에 여러 유형의 이벤트를 저장하고 싶습니다. 그들은 모두 같은 분야를 공유하지만 다르게 행동 할 것입니다. 따라서 Single Table Inheritance를 사용했습니다.
이벤트에 대한 테이블 정의는 다음과 같습니다
class AddEvents < ActiveRecord::Migration
def up
create_table :events do |t|
t.date :event_date
t.string :type
t.references :trackable , :polymorphic => true
end
end
def down
drop_table :events
end
end
내 이벤트 클래스는이 (최소 작업 예) 같이 :
class Event < ActiveRecord::Base
self.abstract_class = true
belongs_to :trackable, polymorphic: true
[... some validation ]
end
class View < Event; end
class Click < Event; end
class Conversion < Event; end
테이블은 잘 생성됩니다. 그러나 나는 전화 할 때 : :view1
와
@view1 = FactoryGirl.build(:view1)
다음과 같이 정의 :
factory :click1, class: Click do
event_date TEST_CLICK_1_EVENT_DATE
end
나는 다음과 같은 오류 메시지가 나타납니다
장애/오류 : 뷰 1 @를 = FactoryGirl.build (: view1) ActiveRecord :: StatementInvalid : Mysql2 :: 오류 : 'adserve_test.views'테이블이 존재하지 않습니다. '보기'에서 전체 필드보기
나도 같은 오류를주는 콘솔에서 클릭 개체를 만들려고했습니다. 어떤 아이디어가 이것을 고치는 방법?
어때 이것에 대해 http://stackoverflow.com/questions/18332080/testing-simple-sti-with-factorygirl? – shoji
@shoji FactoryGirl은 내가 생각하는 문제가 아니어야한다. 이후 콘솔을 통해 새로운 인스턴스를 만들려고했기 때문에 같은 오류가 발생했습니다. – Nessuno