我有3个模型用户,应用和评论
目前我的模型有以下关联
用户 - > has_many :reviews
,has_many :apps
评论 - > belongs_to :app
,belongs_to :user
App - > has_many :reviews
,belong_to :user
这允许用户在简单的应用模型上创建多个评论
我的问题:如何构建我的模型,以便用户只能在一个应用模型中添加一个评论? 如何确保用户无法将评论添加到他/她创建的应用程序中?
答案 0 :(得分:0)
在您的情况下,只需创建一个表单对象,它将控制验证和创建过程。在这里你可以找到一个表单对象的例子: http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/
答案 1 :(得分:0)
您必须在评论模型中创建自定义验证。
validate :user_cannot_be_creator
def user_cannot_be_creator
errors.add(:user_id, "You are not permited to review") unless user_id != App.find_by(id: app_id).user_id
end
我认为你在app和审核模型中有user_id
foreign_key,在审核模型中你有app_id
foreign_key。
答案 2 :(得分:0)
在创建评论/保存之前,您应该检查用户是否不拥有他/她正在审核的应用
从头开始检查导轨reputation system