Невозможно сохранить массив значений в одном столбце таблицы базы данных в rails 2.x?

HTML-код:

Utilities: <br>
<input type="checkbox" name="amenity[utilities][]" value="Gas">Gas<br>
<input type="checkbox" name="amenity[utilities][]" value="Electricity">Electricity<br>
<input type="checkbox" name="amenity[utilities][]" value="Water">Water<br>
<input type="checkbox" name="amenity[utilities][]" value="Parking">Parking<br>

Приведенный выше HTML хранит данные в столбце таблицы БД, как показано ниже:

--- 
- Gas
- Electricity
- Parking
- Water

1 ответ

Это связано с тем, что Rails сериализует объекты в YAML, чтобы сохранить их в базе данных. На самом деле вы видите сериализованный массив YAML. Вот:

require 'yaml'
dbstr = "--- 
- Gas
- Electricity
- Parking
- Water"
# => "--- \n- Gas\n- Electricity\n- Parking\n- Water"
YAML::load dbstr
# => ["Gas", "Electricity", "Parking", "Water"]

Также проверьте документ на ActiveRecord::Base#serialize

Другие вопросы по тегам