下午所有,
我有一个名为 snippet.rb 的模型,我希望一次只有一个用户发布,直到获得批准。
我会将其作为自定义验证运行还是after_create
在 snippet.rb 中运行。
步骤过程如下:
- 用户创建片段
- 提交审批的代码段
- 在前一个片段被批准之前,不能创建其他片段。
有人可以帮助我或指出一些有关如何执行此操作的文档的方向。
永远感谢您的帮助。我正在努力解决这个问题,但找不到任何帮助。
下午所有,
我有一个名为 snippet.rb 的模型,我希望一次只有一个用户发布,直到获得批准。
我会将其作为自定义验证运行还是after_create
在 snippet.rb 中运行。
步骤过程如下:
有人可以帮助我或指出一些有关如何执行此操作的文档的方向。
永远感谢您的帮助。我正在努力解决这个问题,但找不到任何帮助。
在你的 snippets_controller.rb
before_filter :check_last_snippet, :only => [:create]
private
def check_last_snippet
redirect_to root_path unless Snippet.last.approved?
end
我相信您应该使用自定义验证。
例如
validate :verify_for_not_approved_snippets
def verify_for_not_aproved_posts
errors.add(:base, "error message") if "your condition here"
end
在您的用户模型中创建一个方法并在创建代码段之前调用此方法
def check_snippet
return true if user.snippets.blank? || (user.snippets.present? && user.snippets.where(approved: true).size > 1)
end
如果此方法返回 true,则只有用户可以再次发布代码段。它可能会帮助你。
您可以在创建时使用验证,
validate :check_last_snippet_approved, :on => :create
def check_last_snippet_approved
errors.add(:base, "could not add due to last snippet not approved") if !self.last.nil? && self.last.approved == false
end