いいえ、これらは互換性がなく、実際の違いがあります。
belongs_to
は、このクラスの外部キーがテーブルにあることを意味します。したがってbelongs_to
は、外部キーを保持するクラスにのみ入ることができます。
has_one
は、このクラスを参照する別のテーブルに外部キーが存在することを意味します。したがって、has_one
は、別のテーブルの列によって参照されるクラスにのみ入ることができます。
だから、これは間違っている:
class Person < ActiveRecord::Base
has_one :cell # the cell table has a person_id
end
class Cell < ActiveRecord::Base
has_one :person # the person table has a cell_id
end
は、これは次のとおりです。双方向関連については
class Person < ActiveRecord::Base
belongs_to :cell # the person table has a cell_id
end
class Cell < ActiveRecord::Base
belongs_to :person # the cell table has a person_id
end
、あなたはそれぞれのいずれかが必要、と彼らは右のクラスに行かなければなりません。片方向の関連付けであっても、どちらを使うかは重要です。
1つの良い[ブログはこちら](http://requiremind.com/differences-between-has-one-and-belongs-to-in-ruby-on-rails/)同じ! –
上記のコードは間違っていますが、 'has_one:cell'と' belongs_to:person'でなければなりません**コロンと次の単語の間のスペースでなければなりません。 – Josh