Единственный способ сделать это с помощью одного файла cookie - сериализовать данные в текстовом формате, таком как YAML или JSON.
Пример:
cookies.signed[:comment_data] = { value: {comment_id: 1, comment_user:2}.to_yaml, expires: 2.hour.from_now }
И читать его обратно только обработать значение куки через: YAML.load
Но вы должны помнить, что индивидуальный размер печенье ограничен 4К байт (а на самом деле еще меньше, так как подпись cookie увеличивает размер значения cookie), поэтому вы не можете просто добавить туда столько данных, сколько хотите. Таким образом, если все, что вам нужно сохранить, - это некоторые номера, которые вы можете хранить в более компактном формате, например. [1, 2].to_json
.
И по второму вопросу: вы ничего не можете добавить к файлу cookie, но вы можете прочитать все, что хранится в файле cookie, и объединить его с данными, которые вы собираетесь добавить, а затем снова установить cookie.
Вы можете сделать что-то вроде этого:
if cookies[:comment_data]
existing_data_string = cookies[:comment_data]
existing_data = YAML.load(existing_data_string)
else
existing_data = {...}
end
existing_data.update(comment_number: 1234)
cookies.signed[:comment_data] = { value: existing_data.to_yaml, expires: 2.hour.from_now }
большое спасибо за Ваш ответ сэр, но вы можете также ответить на мой второй вопрос по какой-то шанс? Я отредактировал мою начальную запись спасибо! –
Я добавил некоторую информацию к ответу. –