2014-12-05 4 views
1

내 모델 객체를 빌드하는 가장 좋은 방법을 찾아야합니다. 코드베이스를 상속 받았다.별로 좋지 않다.다각형 연관에 대한 FactoryGirl

class Notification < ActiveRecord::Base 
    attr_accessible :author_id, :notifable_id, :notifable_type, :seen, :user_id 
    belongs_to :notifiable, :polymorphic => true 

그래서 author_id와 USER_ID 사용자 모델 신고 대상 다형성 관계는 예를 들어 신고 대상 등의 모델을 가질 수 있습니다

#A user 
has_many :notifications 

을 암시 포인터. 게시물이 마음에 들면 작성자와 수신자가있는 알림 (user_id)을 작성합니다.

통지가있는 사용자를 위해 공장을 생성하는 데 문제가 있습니다. 알림)

factory :notification do |f| 
    n = FactoryGirl.generate(:number_notification) 
    user = create(:user) 
    #author_id 
    f.author_id user.id 
    f.user_id :user_dest 
    f.association :user, user 
end 

factory :notification_like, parent: :notification do |f| 
    f.notifiable_type "Like" 
    f.notifiable_id 1 
end 

이 코드는 작동하지 않습니다. 그것은 존재하지 않는다고 말하는 user.id에 불평합니다. 이 같은

내 기능 시험보기 :

당신은 당신의 연결 작업을 할 callbacks를 사용할 필요가
let(:max) { create(:user) } 
let(:notification) { create(:notification_like, :user_dest => max.id) } 
let(:login_page) { HomeLoginPage.new } 
let(:main_page) { MainPage.new } 

scenario "login" do 
    notification 
    login_page.visit_page.login(max) 
    main_page 
    sleep(60) 
end 

답변

0

.

factory :notification do |f| 
    FactoryGirl.generate(:number_notification) 
    user 

    after(:build) do |notification| 
    notification.author_id = notification.user.id 
    notification.user_id = notification.user.id 
    end 
end