User というモデルがあります:
has_one :etho
Etho と呼ばれるモデルには次のものがあります。
belongs_to :user
User の create メソッドをビルドしました。
@user.build_etho
なんらかの理由で、ログインしても複数のエートを作成できます! ユーザーは 1 つのエートのみを持つ必要があり、1 つしか作成できないようにする必要があります。なぜこれが機能しないのですか?
User というモデルがあります:
has_one :etho
Etho と呼ばれるモデルには次のものがあります。
belongs_to :user
User の create メソッドをビルドしました。
@user.build_etho
なんらかの理由で、ログインしても複数のエートを作成できます! ユーザーは 1 つのエートのみを持つ必要があり、1 つしか作成できないようにする必要があります。なぜこれが機能しないのですか?
ドキュメントによると、build_etho の機能を誤解していると思います。
http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html
「build_association(attributes = {}) 属性でインスタンス化され、外部キーを介してこのオブジェクトにリンクされているが、まだ保存されていない関連型の新しいオブジェクトを返します。」
つまり、build_etho を呼び出すたびに、新しい Etho オブジェクトが作成されます (ビルド、つまり、まだデータベースに保存されていません) - ユーザーは常に正確に 1 つ、おそらく最後に作成されたオブジェクトにリンクされますが、build_etho を呼び出しても保証されませんUser オブジェクトから作成されるのは 1 つだけです。
正確に何をしようとしていますか?
参照id
列はテーブルにあるはずですが、users
確認していただけますか?
つまり、ユーザーの移行では、
t.references :ethos