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
答案 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]
剩下的就是通过回调让列保持同步。