Skip to content

Instantly share code, notes, and snippets.

@simonista
Created July 6, 2012 23:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save simonista/3063331 to your computer and use it in GitHub Desktop.
Save simonista/3063331 to your computer and use it in GitHub Desktop.
# from app/models/submission.rb
# Current version, does not work.
[:submission_comments, :visible_submission_comments].each do |method|
alias_method "old_#{method}", method
instance_eval <<-CODE
def #{method}(options = {})
res = old_#{method}(options)
res = res.select{|sc| sc.grants_right?(@comment_limiting_user, @comment_limiting_session, :read) } if @comment_limiting_user
res
end
CODE
end
# >> @sub = SubmissionComment.last.submission.tap{|s| s.limit_comments(User.find(2))}; nil
# >> @sub.visible_submission_comments.count
# => 7
# --------------------------------------------------------------------------------------------
# Works correctly
alias_method :old_submission_comments, :submission_comments
def submission_comments(options = {})
res = old_submission_comments(options)
res = res.select{|sc| sc.grants_right?(@comment_limiting_user, @comment_limiting_session, :read) } if @comment_limiting_user
res
end
alias_method :old_visible_submission_comments, :visible_submission_comments
def visible_submission_comments(options = {})
res = old_visible_submission_comments(options)
res = res.select{|sc| sc.grants_right?(@comment_limiting_user, @comment_limiting_session, :read) } if @comment_limiting_user
res
end
# >> @sub = SubmissionComment.last.submission.tap{|s| s.limit_comments(User.find(2))}; nil
# >> @sub.visible_submission_comments.count
# => 5
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment