Как сохранить 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.
Ответы
Ответ 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