我正在尝试在初始化时立即设置模型的属性。我尝试过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。
谢谢!
答案 0 :(得分:0)
您有拼写错误:将before_filter
更改为after_create
1)before_filter
是控制器回调函数。
2)您想使用after_create
,因此用户已经关联,您可以使用该关联。