Различие между has_one и belongs_to в направляющих? [дубликат]

JsFiddle

.search-group {
    position: absolute !important;
    left: 50px !important;
    bottom: 5px;
    width: calc(100% - 100px)
}

Добавьте width: calc(100% - 100px) в свой CSS. right:50px также работает. Но в вашем .input-group классе есть width:100%. Таким образом, это не будет работать, как ожидалось.

69
задан rocknrollcanneverdie 8 March 2016 в 23:55
поделиться

3 ответа

Нет, они не взаимозаменяемы, и между ними есть некоторые отличия.

own_to означает, что внешний ключ находится в таблице для этого класса. Таким образом, own_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

Правильный способ (если Ячейка содержит поле person_id ):

class Person < ActiveRecord::Base
  has_one :cell # the person table does not have 'joining' info
end

class Cell < ActiveRecord::Base
  belongs_to :person # the cell table has a person_id
end

Для двух -Путем ассоциации, вам нужен по одному каждого, и они должны быть в правильном классе. Даже для односторонней ассоциации имеет значение, какую из них вы используете.

159
ответ дан 24 November 2019 в 13:41
поделиться

Если вы добавите "own_to", то вы получите двунаправленную ассоциацию. Это означает, что вы можете получить человека из ячейки, а ячейку - из человека.

Нет никакой реальной разницы, оба подхода (с и без «принадлежит_то») используют одну и ту же схему базы данных (поле person_id в таблице базы данных ячеек) .

Подводя итоги: не добавляйте «own_to», если вам не нужны двунаправленные ассоциации между моделями.

12
ответ дан 24 November 2019 в 13:41
поделиться

Использование обеих моделей позволяет получать информацию как из моделей Person, так и из моделей Cell.

@cell.person.whatever_info and @person.cell.whatever_info.
7
ответ дан 24 November 2019 в 13:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: