【发布时间】:2014-07-28 21:58:08
【问题描述】:
我有两个模型:Draft 和 Pick。我希望 Draft 的 ActiveRecord 列 current_pick 在创建 Pick 后增加 1。
在 Pick 内部,我有一个方法可以将 draft.current_pick 增加 1:
class Pick < ActiveRecord::Base
belongs_to :draft
after_save :advance_draft
def advance_draft
draft.updraft
end
在draft内部,上升气流是:
def updraft
self.current_pick += 1
end
我确保 current_pick 加一的测试是:
it 'should run the advance_draft method after creating' do
team1 = FactoryGirl.create(:team)
team2 = FactoryGirl.create(:team_two)
cam = FactoryGirl.create(:player)
draft = FactoryGirl.create(:two_team_draft)
pick = Pick.create(:player_id => cam.id, :team_id => draft.team_at(draft.current_pick).id, :draft_id => draft.id, :draft_position => draft.current_pick)
draft.draft_position.should eq 2
end
pick 和draft 正在测试中创建,但没有在正确的draft 上调用上升气流方法,因为在创建pick 之后pick.draft.draft_position 仍为1。 (应该增加到 2)。
这是我的架构:
create_table "drafts", force: true do |t|
t.integer "draft_position"
t.integer "number_of_teams"
t.integer "PPTD"
t.integer "PPR"
t.integer "current_pick", default: 1
end
create_table "picks", force: true do |t|
t.integer "player_id"
t.integer "team_id"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "draft_id"
t.integer "draft_position"
end
我的问题是,如何在我的测试中正确增加pick.draft.current_pick?
【问题讨论】:
标签: ruby-on-rails ruby activerecord rspec