Conversation
app/models/forumthread.rb
Outdated
| user_id = user.try(:id).to_i | ||
| role_value = user.try(:role).to_i | ||
| can_read = "COALESCE(forum_role_read.value, 0) <= ? AND COALESCE(forumgroup_role_read.value, 0) <= ?" | ||
| can_read = "(COALESCE(forum_role_read.value, 0) <= ? AND COALESCE(forumgroup_role_read.value, 0) <= ?)" |
db/schema.rb
Outdated
| t.string "title", limit: 255 | ||
| t.text "content", limit: 16777215 | ||
| t.string "title", limit: 191 | ||
| t.text "content", limit: 65535 |
There was a problem hiding this comment.
please don't shorten any text limits
jomo
left a comment
There was a problem hiding this comment.
You can throw away half of your code and just use collection_check_boxes 😎
Other than that, if I'm not mistaken you should be able to use something like
@forum.badges.create!(badge: b, permission: p)and
@forum.badges.find_by(id: b, permission: p)Also, you can use
Badge.where.not(name: "none")| <tr> | ||
| <td><b>Badges with read permission</b></td> | ||
| <td> | ||
| <% Badge.where("name != 'none'").each do |b| %> |
There was a problem hiding this comment.
You could use f.check_box instead, this would also generate a proper label tag.
| .joins("LEFT JOIN roles as forumgroup_role_write ON forumgroups.role_write_id = forumgroup_role_write.id") | ||
|
|
||
| threads = threads.where("forumthreads.user_author_id = ? OR (#{can_read}) OR (#{sticky_can_write})", user_id, role_value, role_value, role_value, role_value) | ||
| threads = threads.where("forumthreads.user_author_id = ? OR (#{can_read}) OR (#{sticky_can_write}) OR (?)", user_id, role_value, role_value, role_value, role_value, Forum.find(forum).can_read?(user)) |
There was a problem hiding this comment.
Couldn't you just use forum.can_read?
There was a problem hiding this comment.
Since this results in:
OR (true)(which will always match) orOR (false)(which will have no effect on the current query)
you could just wrap the query in a condition and not filter them any further.
Also, given that (#{can_read}) just mimics forum.can_read? in the SQL query, you don't need to include it anymore:
unless forum.can_read?(user)
threads = threads.where("forumthreads.user_author_id = ? OR (#{sticky_can_write})", user_id, role_value, role_value)
end|
where.not, if I'm not mistaken, was added in rails 5. We are using rails 4. |
|
|
In that case I have no clue, but I definitely wasn't able to do that when I was a developer. |
No description provided.