我想知道这是可能的,还是我需要以不同的方式对其进行建模。我有一个表列,可以有'true'或'false'值。我有两种类型的用户,常规用户和编辑器。这是Post的基本模型:
create_table "post", force: true do |t|
t.boolean "post_visible", default: false
end
普通用户可以创建帖子,但在网站上不会立即显示帖子。编辑器需要将布尔列post_visible
设置为“true”。发布后,常规用户可以将post_visible
更改回false
。如何才能让编辑器将post_visible
列设置为true
和false
,将常规用户设置为false
。
编辑
post_visible
列更改为true
和false
普通用户
post_visible
列更改为false
用户表有列is_editor
,如果用户是普通用户,则为false;如果用户是编辑者,则为true。安全性因此我可以通过帮助程序轻松访问当前用户权限,如下所示:current_user.is_editor
。
有任何建议如何实现这一目标? :)
答案 0 :(得分:1)
before_validation :make_false_if_regular
private
def make_false_if_regular
if user.type == "regular"
post.post_visible = nil
end
end
答案 1 :(得分:1)
我认为您应该考虑使用两个字段而不是一个:is_reviewed和is_visible。编辑器可以编辑这两个字段,常规用户只能更改is_visible。如果该帖子经过审核并且可见,则会发布该帖子。如果你这样做,请确保普通用户无法批量分配is_reviewed。
答案 2 :(得分:0)