将对象格式写入mysql表的策略

时间:2012-01-04 21:02:37

标签: ruby-on-rails activerecord ruby-on-rails-3.1

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字段的回调。

是否有替代方案或这看起来是一个合理的想法?

THX

2 个答案:

答案 0 :(得分:1)

为什么不使用表格和单独的模型?

用户喜欢发布

users_posts ---> user_id,post_id

类用户拥有并且属于许多喜欢(类重写为Post)

当您使用关系数据库时,我不会将关系数据存储为字段。

答案 1 :(得分:0)

您可以使用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]

剩下的就是通过回调让列保持同步。