1

Так я хочу, чтобы сохранить comment_id:value пару и comment_user:value паруКак хранить более одного значения, в то же печенье - Рельсы

До сих пор я это сделать

cookies.signed[:comment_author] = { value: @comment.id, expires: 2.hour.from_now }

В основном я пытаюсь чтобы определить, как хранить более одного значения для одного и того же файла cookie, чтобы избежать создания нескольких файлов cookie для одного и того же пользователя. Это возможно?

Вопрос 2: Как я могу динамически добавлять к этому файлу cookie, если существуют какие-либо значения?

ответ

3

Единственный способ сделать это с помощью одного файла 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 } 
+0

большое спасибо за Ваш ответ сэр, но вы можете также ответить на мой второй вопрос по какой-то шанс? Я отредактировал мою начальную запись спасибо! –

+0

Я добавил некоторую информацию к ответу. –

Смежные вопросы