0

User というモデルがあります:

has_one :etho

Etho と呼ばれるモデルには次のものがあります。

belongs_to :user

User の create メソッドをビルドしました。

@user.build_etho

なんらかの理由で、ログインしても複数のエートを作成できます! ユーザーは 1 つのエートのみを持つ必要があり、1 つしか作成できないようにする必要があります。なぜこれが機能しないのですか?

4

2 に答える 2

2

ドキュメントによると、build_etho の機能を誤解していると思います。

http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

「build_association(attributes = {}) 属性でインスタンス化され、外部キーを介してこのオブジェクトにリンクされているが、まだ保存されていない関連型の新しいオブジェクトを返します。」

つまり、build_etho を呼び出すたびに、新しい Etho オブジェクトが作成されます (ビルド、つまり、まだデータベースに保存されていません) - ユーザーは常に正確に 1 つ、おそらく最後に作成されたオブジェクトにリンクされますが、build_etho を呼び出しても保証されませんUser オブジェクトから作成されるのは 1 つだけです。

正確に何をしようとしていますか?

于 2012-07-23T21:07:10.720 に答える
0

参照id列はテーブルにあるはずですが、users確認していただけますか?

つまり、ユーザーの移行では、

t.references :ethos
于 2012-07-23T20:52:54.847 に答える