2014-12-05 151 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,說它不存在。

我的功能測試是這樣的:

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

您需要使用callbacks,讓您工作的關聯。

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