0

我试图在初始化模型后立即设置它的属性。我试过 before_initialise、after_initialise、before_create、after_create。

我究竟做错了什么?

describe "turn based system" do
  before(:each) do
    @user1 = Factory :user
    @user2 = Factory :user

    @rota = @user1.rotas.create
    @rota.users << @user2
  end

it "should be user1's turn at the beginning" do
  @rota.current_turn.should == @user1.id   --> fails
end

执行:

class Rota < ActiveRecord::Base
  has_many :rotazations
  has_many :users, :through => :rotazations
  has_many :invitations

  after_create :set_current_turn

  private 

  def set_current_turn
    if self.users.count > 0
      self.current_turn = self.users[0].id
    end
  end
end

编辑 如果我使用以下方法构建 rota 模型:

@rota = @user1.rotas.create(:current_turn => @user1.id)

它有效——但是,我觉得我在复制代码——我总是希望 current_turn 字段成为对象创建者的 id。

谢谢!

4

1 回答 1

0

您有一个错字:更改before_filterafter_create

1)before_filter是控制器回调函数。

2)你想使用after_create所以用户已经被关联,你可以使用关联。

于 2012-05-02T21:10:43.097 回答