2012-01-16 12 views
1

を保存しない、私はこのコードを持っている...動作しませんRailsの3.1 - find_or_create_by

recipient = User.find_or_create_by_email(params[:recipient_email], 
     { :password => 'password', 
     :password_confirmation => 'password', 
     :first_name => 'First', 
     :last_name => 'Last', 
     :active => false }) 

。受信者は、データベースに保存されません。アクティブフラグ今本当のデフォルトに設定されています。ただし、この...

recipient = User.find_or_create_by_email(params[:recipient_email], 
     { :password => 'password', 
     :password_confirmation => 'password', 
     :first_name => 'First', 
     :last_name => 'Last'}) 

は、それが受信者を作成し、それをデータベースに保存しますが、ということでは動作しません。ここで何が起こっているのかについての私が持っているUserモデル...

attr_accessible :first_name, :last_name, :email, :password, :password_confirmation, :active 

validates :active, :presence => true 

任意のアイデア?

+0

私はそれが私にいくつかの答えをupvoteさせてくれないと思った。明らかに私が紛失しているものがあります。これを指摘してくれてありがとう。 – slabounty

+0

ああ...大きなチェックボックスのこと?はい、私は答えの束を受け入れました。問題を指摘してくれてありがとう@troutwine – slabounty

+0

問題はありません。私は手にしている質問のために何も持っていない。あなたはirc.freenode.netの#rorで人々に渡すかもしれません。 。 – troutwine

答えて

1

:activeは、trueまたはfalseです(マイグレーションファイルにデフォルト値を定義していない場合はnil)。多分、偽は存在しないと解釈されます。私は本当に分かりません。しかし、これは私がこれを行う方法は以下のようになります

は、あなたのファイルにt.boolean :active, :default => falseを入れて(または移行を作成する必要がある場合、change_column :table, :active, :boolean, :default => falseを行う)してから検証を削除します。

異なる値のパラメータを指定しない限り、すべてのユーザーは現在falseとして保存されます。あなたのユーザーの大部分が真実であるべきであるなら(その逆も同様)、そのように変更してください。これにより、検証が不要になります。

私はあなたの問題のポイントを得ました。そうでなければ、私を無視してください。

+0

@pduesteler - で鳴るのためのおかげでここに私の移動だと私はあなたが私はすでにそれをやっていると思う、と言っているのか理解していれば... 'クラスAddActiveToUser true end end' 私に何かが不足していますか? – slabounty

+0

@pduesteler - 検証を削除しただけですべてが機能します。デフォルトはtrueで、falseを渡すことができます。 **確かな理由はありません**しかし、今のところ私は満足しています。ありがとう!私が思ったように – slabounty

+0

、偽は存在しないと解釈されるようです。どういたしまして。 – pduersteler