Rails:如何设计一个帮助用户进行报告的数据结构?

时间:2013-01-02 07:49:01

标签: ruby-on-rails database

我的Rails应用有User型号和Idea型号。每个用户可以有很多想法,每个想法属于一个用户(或没有)。用户使用Idea控制器的claim操作获取创意的所有权,并使用release操作发布创意。

到目前为止,真的很简单。但我刚刚意识到我希望这样做多一点,现在我不确定如何继续:基本上,我希望用户能够“报告”有关错误/无效创意的想法,以及注释指定报告的原因。

我还想跟踪有关声明主题的指标 - 在标记为已提交之前声明了多长时间(用于管理博客帖子),等等。

在一个不相关的问题中,有人建议我在我的应用中需要一个Claim模型来进行这种复杂的跟踪。这对我来说很有意义,但我真的不确定该模型将如何构建,以及它将如何工作。它会像日志吗?如果是这样,我将如何确定每个想法的当前想法状态?

对此的任何见解都是最受欢迎的。

2 个答案:

答案 0 :(得分:1)

我认为,由于您需要记录所有用户操作,因此如果您保持独立报告和声明,则会更好。

所以,它可能看起来像

用户has_many提示

理念has_many声明

创意has_many报告

代码:

class User < ActiveRecord::Base
  attr_accessible :name
  has_many :idea
end


class Idea < ActiveRecord::Base
  attr_accessible :desc, :title
  belongs_to :user
  has_many :claim
  has_many :report
end


class Claim < ActiveRecord::Base
  attr_accessible :status
  belongs_to :idea
end

class Report < ActiveRecord::Base
  attr_accessible :reason
  belongs_to :idea
end

因为,rails迁移会为时间戳添加列。你可以计算出状态变化之间的时差等。

答案 1 :(得分:0)

我不知道红宝石,但至于设计,

将一个想法报告为无效会使其失去资格吗?

如果没有,您可以使用报告模型,其中包含Notes中报告的想法。在表示时,您可以在渲染帖子之前查看它。

相关问题