2012-03-10 13 views
2

私は認証のためにソーサリー宝石を使用しています。私は実際に別のプロジェクトを問題なく使っていますが、私は突然奇妙な状況に陥ります。私のモデルは、attr_accessibleを持たない、もともと生成された魔法のユーザモデルです。魔法の奇妙なattr_accessible

私は(すくいデシベルで:種子)を実行
users = { 

:hthought => { 
    :username => 'jkjhkj', 
    :email => 'hkjhk', 
    :crypted_password => 'hkjhjkhk', 
    :salt => 'hkjhjkhjh', 
    :password => '57667' 
} 

} 

users.each do |item, hash| 
    user = User.new(hash) 
    user.save! 
    hash.each do |attribute, value| 
     user.update_attribute(attribute, value) 
    end 
end 

さて、私のような種を提出している、私は得る:

rake aborted! 
Can't mass-assign protected attributes: crypted_password, salt 

それはなぜですか?なぜ私はこれを得るのかわかりません。私のUserモデルにはattr_accessibleがないからです。さらに、私は別のプロジェクトで全く同じコードを使用しており、これは決して得られません。

なぜでしょうか?

答えて

3

あなたがソーサリーコード(https://github.com/NoamB/sorcery/blob/master/lib/sorcery/model.rb#L82)を参照してください場合、あなたはそれを見ることができます:

attr_protected @sorcery_config.crypted_password_attribute_name, @sorcery_config.salt_attribute_name 

だから、この保護された警告を持つことが普通です。

このコミットで追加していたのは、https://github.com/NoamB/sorcery/commit/7c2e846bf5c084bea72eb6477e72daf0177d789e 1年前です。

+0

興味深い助けます。 Thanxを明確化する。 – Spyros

0

魔法のものではなく、Railsのものかもしれません。あなたが新しいアプリがRails 3.2.3を使用していて、あなたの古いアプリがそれを下回っていたなら、attr_protectedホワイトリストの周りのセキュリティが強化されて別の動作を引き起こしている可能性があります。この投稿は、多分それは非常に非常に奇妙な、私は私の他のプロジェクトでそれを取得していないことは非常に奇妙な、:)

Rails error: Can't mass-assign protected attributes