Я использую рубин 1.8.7 и рельсы 3.0.3, проходящие через Dev книги Agile Rails из PragProgуничтожить метод не кажется, работает
Этот метод уничтожения на моем ProductsController не удаляет свой продукт, и я не понимаю почему.
Вот мой первый разрез, что я ожидал «просто работать»
def destroy
@product = Product.find(params[:id])
@product.destroy
respond_to do |format|
format.html { redirect_to(products_url) }
format.xml { head :ok }
end
end
Но мой тест Штрогалом Product.count пошел вниз не удалось.
Если я изменяю использовать метод удаления класса, как это:
def destroy
Product.delete(params[:id])
respond_to do |format|
format.html { redirect_to(products_url) }
format.xml { head :ok }
end
end
мой тест проходит.
Вот тест
test "should destroy product" do
assert_difference('Product.count', -1) do
if @product.referenced_by_line_item
@product.line_items.remove_all
end
delete :destroy, :id => @product.to_param
end
assert_redirected_to products_path
end
У меня есть метод before_destroy на моей модели продукта класса
def referenced_by_line_item
if line_items.count.zero?
return true
else
errors.add(:base, 'Line Items present')
return false
end
end
Любые идеи, что я делаю неправильно здесь? От чтения документов (и поиска других вопросов здесь) я ожидаю, что @ product.destroy и Product.delete (id) будут делать то же самое.
Спасибо!
спасибо, что нашли время, чтобы объяснить! Моя главная цель здесь - узнать, что RoR не обладает высоким первичным кодом :) – 2010-12-16 17:36:52