стратегия записи формата объекта в таблицу mysql - PullRequest
0 голосов
/ 05 января 2012

Rails новичок здесь, так что просто хочу быть уверен, что я делаю это правильно. У меня есть несколько сложных отношений, и я хотел бы кэшировать эти отношения локально в строке mysql. Подумайте, как нравится Facebook. У меня есть эта информация в настоящее время в таблице MySQL. Я собирался поместить в столбец «likes_ids», который является текстом и хранится как json. И тогда есть аксессор, как:

def likes
  str=self.liked_ids
  b=JSON.parse(str)
  return b
end 

Я видел, как некоторые люди упоминали, что они хранятся как YAML, но тонна json уже используется.

И затем, когда кто-то подчиняется основной таблице (например, likes_users), мы просто добавляем обратный вызов, который обновляет это поле json.

Есть ли альтернативы или это кажется разумной идеей?

1010 * ТНХ *

Ответы [ 2 ]

1 голос
/ 05 января 2012

Почему бы не использовать таблицу и отдельную модель?

Пользователь любит Сообщение

users_posts ---> user_id, post_id

Пользователь класса имеет и любит много лайков (переопределение класса для Post)

Я бы не стал хранить данные отношений в виде поля при использовании реляционной базы данных.

0 голосов
/ 05 января 2012

Для определения столбца сериализации можно использовать метод serialize .
Сериализация выполняется через YAML.

class User < ActiveRecord::Base
  serialize :liked_ids, Array
end

user = User.create(:liked_ids => [1, 2, 3])
User.find(user.id).liked_ids # => [1, 2, 3]

Осталось только синхронизировать столбец с помощью обратных вызовов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...