关于使用像关联模型这样的hstore字段是否安全或良好做法的问题,例如我的模型是用户,奖品和奖励这个案例我希望有以下关联:
class User < ActiveRecord::Base
has_many rewards
end
class Reward < ActiveRecord::Base
belongs_to :user
end
class Prize < ActiveRecord::Base
end
注意:奖励模型将有一个hstore字段,我将存储奖品,如{prize_id:1,name:***,等},这是考虑有记录总是以防奖品对象可能是删除,这就是为什么我不想建立has_many关系的原因。任何想法或评论,如果这可能是一个正确的方式,将不胜感激!
答案 0 :(得分:1)
恕我直言,使用任何一种“非常规”机制来模拟ActiveRecord中的关系是不值得的。我会使用标准机制(Reward
belongs_to :prize
或has_many :prizes
)并让您的Prize
模型包含您希望获奖时设置的“墓碑”位变得有效隐形。您可以采取一些措施来使这项工作更好/更轻松:
覆盖模型的delete
方法,以便不是实际删除对象,而是设置其墓碑位。
使用default_scope
隐藏设置了墓碑位的奖品,以便“已删除”奖品不会显示在例如可用奖品列表中。
使用处理此类“软删除”的gem,例如Paranoia。