зависит: уничтожить не работает, рельсы 3.1 - PullRequest
0 голосов
/ 30 января 2012

У меня есть приложение rails 3.1, где у меня есть эта простая пользовательская спецификация

require 'spec_helper'

describe User do
  describe "deleting user" do
    let(:user) { FactoryGirl.create(:user) }
    context "that has accounts" do
      it "deletes the user an all its accounts" do
        FactoryGirl.create(:account, name: 'Santander', user: user)
        FactoryGirl.create(:account, name: 'BCI', user: user)
        user.accounts.length.should == 2
        user.delete
        user_accounts = Account.where(user_id: user.id)
        user_accounts.should be_nil
      end
    end
  end
end

и модели

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  attr_accessible :email, :password, :password_confirmation, :remember_me

  has_many :accounts, dependent: :destroy
  has_many :categories, dependent: :destroy
end

и

class Account < ActiveRecord::Base
  belongs_to :user
end

и я получаю следующую ошибку

1) User deleting user that has accounts deletes the user an all its accounts
     Failure/Error: user_accounts.should be_nil
       expected: nil
            got: [#<Account id: 400, name: "BCI", start_balance: 0, atype: "checking_account", user_id: 1692, current_balance: 0, interest_rate: nil, billing_day: nil, created_at: "2012-01-30 00:42:51", updated_at: "2012-01-30 00:42:51">, #<Account id: 399, name: "Santander", start_balance: 0, atype: "checking_account", user_id: 1692, current_balance: 0, interest_rate: nil, billing_day: nil, created_at: "2012-01-30 00:42:51", updated_at: "2012-01-30 00:42:51">]
     # ./spec/models/user_spec.rb:13:in `block (4 levels) in <top (required)>'

Этого бы не случилось ... в чем проблема? Я попробовал это вручную в консоли rails в среде разработки, и это тоже не сработало

1 Ответ

0 голосов
/ 30 января 2012

Я не уверен, но попробуйте это:

describe User do
  describe "deleting user" do
    let(:user) { FactoryGirl.create(:user) }
    context "that has accounts" do
      it "deletes the user an all its accounts" do
        FactoryGirl.create(:account, name: 'Santander', user: user)
        FactoryGirl.create(:account, name: 'BCI', user: user)
        user.accounts.length.should == 2
        user.delete :destroy
        user_accounts = Account.where(user_id: user.id)
        user_accounts.should be_nil
      end
    end
  end
end

РЕДАКТИРОВАТЬ: я немного изменил, особенно в отношении строки delete.Сделай выстрел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...