Я проверяю эту линию контроллера:a == b возвращает true, a.attribute == b.attribute возвращает false; рубин
@channel.update_attribute(:active, true)
expect(channel.active).to be_true fails (my variable is named 'channel')
expect(assigns[:channel].active).to be_true passes
assigns[:channel] == channel
=> true
assigns[:channel].active == channel.active
=> false
assigns[:channel].active == channel.reload.active
=> true
Я не понимаю, почему оператор сравнения говорит, что правопреемники [: канал] == канал, но их «активный» атрибут отличается.
Кажется, что это работает, если вы вызываете 'channel.reload' (последнее выражение). Это означает, что 'channel' и' @ channel' являются разными объектами. Обновление не автоматически обновляет другое, хотя они могут ссылаться на одну и ту же запись в вашей базе данных. – Stefan