1

「a_value」と「b_id」という 2 つの属性があります。(実際の名前ではありません。) 「a_value」は、「b_id」によって参照されるモデル「B」からの情報を使用して、ファイル システムに保存されます。

したがって、私の params オブジェクトは次のようになります。

params[:foo] = {"a_value"=>"nifty value","b_id"=>"38"}

例えば。

さて、foo_controller.rb で:

foo = Foo.new(params[:foo])

しかし、これは失敗します。

ActiveRecord::RecordNotFound: ID なしで Foo が見つかりませんでした

Foo.a_value=(value) で私は持っています

...
self.my_path = self.b_id.the_path
...

Rails は割り当てをアルファベット順に行っており、b_id が存在しない場合にパニックを起こしているように見えますが、params ハッシュに存在し、検証に合格しているにもかかわらずです。

この割り当てが行われる順序を強制することはできますか? または、大量割り当ての残りが発生する前に b_id 割り当てを行う before_filter を作成できますか?

4

1 に答える 1

0

私はそれを考え出した!

これを行う方法は次のとおりです。

foo = Foo.new
foo[:b_id] = params[:foo][:b_id]
foo.update_attributes(params[:foo])
if foo.save...

検証が適切であることを確認する必要がありますが、機能します。

属性の名前を変更せずに、属性の部分的な順序付けを指定できると便利です。

于 2009-09-13T12:13:45.673 に答える