我有两种模式:
Room
RoomMembers
...
class Room
before_create :add_room_member
def add_room_member
self.room_members.build(:user_id => self.user.id)
end
然后...
class RoomMember
before_create :default_values
def default_values
Rails.logger.info 'STUFF'
end
创建新房间时。 RoomMember before_create默认值方法没有触发......为什么会这样?
由于
答案 0 :(得分:0)
build本质上是new的别名,它实例化对象,但不保存它。由于在Rails中创建对象只是实例化并保存对象,因此在使用构建时缺少保存部分。看看你的例子,我认为在创建房间之后添加房间成员更有意义,而不是之前。然后,您可以使用create,它应该触发RoomMember回调。
class Room
after_create :add_room_member
def add_room_member
self.room_members.create(:user_id => self.user.id)
end