5

シード データを作成するときに attr_accessible をバイパスするクリーンな方法を実際に見つけることはできません。このシード ファイルが完全に安全であることはわかっているので、大量割り当てを問題なく使用できるようにしたいと考えています。

Rails 3にそれらを強制的に受け入れるクリーンな方法はありますか?

4

2 に答える 2

9

これは簡単なハックです (Mike に感謝します)。これを、seeds.rb の先頭に置きます。

# Dodge the mass assignment
User.send(:attr_accessible, :username)
User.send(:attr_accessible, :admin)

モデルを乱雑にすることなく、これを簡単に呼び出すことができます (:as => :seed を使用):

@user = User.find_or_create_by_username(:username => 'ryanonrails', :admin => true)
于 2012-08-16T21:36:37.740 に答える
5
#in model
attr_accessible :name, :role,.... :as => :seed

#in seed.rb
model.assign_attributes({name: "Putin", role: "president"....},:as => :seed)
model.save
于 2012-05-20T01:11:47.957 に答える