Подтвердить что ты не робот

Как сохранить Mongoid foreign_key как целое или сохранить родительскую модель с идентификатором Integer

Вот ситуация.

user embed_one profile
profile belongs_to city

Я заполнил таблицу города с помощью

id as Integer
name as String

Теперь я делаю user.update_attributes(:profile_attributes{:city_id=>"5"}), имитирующий представление формы браузера. Затем я проверяю user.profile, я вижу, что city_id хранится как строка. Это дает моему user.profile.city, чтобы дать нуль.

Мне интересно, что здесь делать правильно. Должен ли я указывать свой город id или объект BSON? Или я должен попытаться перехватить update_attributes, чтобы сделать mongoid store city_id целым? Причина, по которой я использую Integer как id для города, состоит в том, что я думал, что поиск по Integer быстрее, чем поиск по строке. А также у меня есть таблицы состояния и города, и я хочу, чтобы идентификаторы были определены предсказуемым образом, поэтому я не хочу использовать ключ BSON randome.

4b9b3361

Ответ 1

Конечно, если вы используете Mongoid, правильным способом является использование объектов BSON в качестве идентификаторов. Но если вам абсолютно необходимо использовать целые числа в качестве идентификаторов города, вы можете имитировать присваивание с помощью кода типа

class Profile
  def city
    City.where(:id => self.city_id).last
  end

  def city=(new_city)
    self.city_id = new_city.id
  end
end