После выполнения Rails 4.0 supplement, я добрался до Some specific issues части, где Майкл упоминаетDUP метод не работает после переноса Rails 3.2 → 4.0
Одно крошечное изменение в спецификации Micropost (
spec/models/micropost_spec.rb
) является изменение отdup
метод (чтобы дублировать пользовательские микропосты пользователя) на методto_a
(который преобразует их в массив). Вот версия сdup
:
Rails 3,2
it "should destroy associated microposts" do
microposts = @user.microposts.dup
@user.destroy
microposts.should_not be_empty
microposts.each do |micropost|
Micropost.find_by_id(micropost.id).should be_nil
end
end
Rails 4,0
it "should destroy associated microposts" do
microposts = @user.microposts.to_a
@user.destroy
expect(microposts).not_to be_empty
microposts.each do |micropost|
expect(Micropost.where(id: micropost.id)).to be_empty
end
end
Он сам говорит, что он не полностью понимает необходимость изменения метода :
По причинам, не вызывающим меня, звонок
dup
больше не работает в Rails 4.0, но заменяет егоto_a
работает отлично.
Так почему же dup
больше не работает?
Интересно, что после того, как я разместил этот вопрос, тест действительно не прошел. Пробовал использовать 'microposts = @ user.microposts.dup.to_a', и это сработало! – gregoltsov