8

ユーザーとファームの 2 つのモデルを持つ Ruby on Rails アプリケーションを作成しています。ファーマー フィールドが true に設定されている場合、ユーザーはファーマーと見なされます。ただし、農家向けの個別のクラスはありません。

ユーザーは 1 つのファームを持つことも、まったく持たないこともあります。(これはゼロまたは1の関係と呼ばれると思います)。私が置く場合:

has_one :farm

ユーザーモデルで

belongs_to :user

ファーム モデルでは、これによりユーザーとファームの間に 1 対 1 の関係が作成され、すべてのユーザーがファームを持つことになります。上記を行った場合、すべてのユーザーがファームを持つことになりますが、ファームを持つことができない特定のユーザーがいるため、あまり意味がありません。

要するに、私が望むのは、ファーマーのブール値が true に設定されている場合にのみ、ユーザーがファームを持つことです。そうでなければ、関係は存在しないはずです。ActiveRecord を使用してこれを行う方法はありますか?

4

1 に答える 1

14

has_one は、関連エンティティ (ここではファーム) が 1 つ必要であることを意味するものではありません。has_one は、リンクされたレコードが 0 または 1 の関係に使用されます。

ここで同様の議論を見つけることができます。

モデルに別のモデルのインスタンスが 1 つまたは 0 つある場合、has_one 関連付けを使用できますか?

于 2014-03-21T15:10:32.973 に答える