2012-03-03 17 views
14

最近私はappをrails 3.2.2にアップグレードしました。 N | |やる名:レール3.2.2/Devise:rspecで廃止予定の警告

私はFactory_girl

Factory.sequence

を使用しています"name - #{n}" end

Factory.define:user do | u | u.first_name {Factory.next(:name)}
u.last_name {| u | 'last_' + u.first_name} u.password 'secret'
u.password_confirmation {| u | u.password} u.sequence(:email){| i | "user_#{i}@example.com"}

この簡単なテスト

{Factory.build指定(ユーザ)を.should be_valid}

次の警告を生成します。

DEPRECATION警告:あなたはで にattr_writer`など(ブロック(2つのレベルから呼び出される)属性user_id'. Writing arbitrary attributes on a model is deprecated. Please just use を作成しようとしている...

は、どのように私はそれを取り除くことができますか?

答えて

4

は、私は次のコードで同じ警告に会った:

広告モデル:

class Ad < ActiveRecord::Base 
    belongs_to :user 
end 

工場:

FactoryGirl.define do 
    factory :ad do 
     association :user 
    end 
end 

FactoryGirl.define do 
    factory :user do 
     first_name {Factory.next(:first_name)} 
     last_name {Factory.next(:last_name)} 
     email {|x| "#{x.first_name}.#{x.last_name}#{Factory.next(:count)}@test.com"} 
     password Forgery(:basic).password 
     confirmed_at Date.today << 10 
    end 
end 

テスト

require 'spec_helper' 

describe Ad do 
    before(:each) do 
     @ad = Factory.build(:ad) 
    end 

    "it is not valid without a user" 
end 

テストを実行私に似てくれたエラー。広告モデルに

attr_accessor :user 

追加

警告が固定されています。

私はそれが役に立ちそうです。

+0

を。他のアイデア? – Alpha

+0

Deviseなしで私のために働いた。ありがとう、それは私を夢中にさせていた。 – IAmNaN

19

おそらく、更新された列定義でテストデータベースを準備/移行していないため、属性を任意に設定しようとしていると考えられます。

rake db:test:prepareが更新されていることを確認してください。

Here's the source codeここでは、Railsが列または属性を最初に確認し、見つからない場合に警告します。

+0

残念ながらそれは問題ではありません。私のテストDBは最新です。私は準備タスクを実行しましたが、私はまだ同じ警告を持っています – Alpha

+1

それを聞いて申し訳ありません。実際に移行するには、 'RAILS_ENV = test rake db:migrate'を実行しなければならないことがあります。ちょうどアイデアは、実際のテストDBを確認して、列が存在することを確認してください。 – trisweb

0

RSpecの中にテストをしながら、私はこれと同じ警告を持っていたし、私の問題は、私が誤って、この持っていた親モデルと子モデル持っていたということでした:それは私のために動作しませんでした

class Child < ActiveRecord::Base 
    belongs_to :parent 
end 

...... 

class Parent < ActiveRecord::Base 
    belongs_to :child 
end 
関連する問題