0

我的程序正在尝试自动创建一些组,前缀为“automated_group”,加载所有组时不会显示,无法编辑,还有更多内容。但我必须限制用户这样做。但是如果我创建一个验证函数,它不会让我的应用程序这样做,并且 group.save 返回 false。即使更新其他属性,它也不会让我保存它,因为名称不会验证。

还有其他方法吗?有时使用验证,或者检查谁在更改值?

提前致谢

4

2 回答 2

0

您可以使用像 cancan ( https://github.com/ryanb/cancan ) 这样的权限系统。然后你可以像这样定义一些东西:

can :manage, Group, automated_group: false
于 2013-07-07T11:14:23.357 回答
0

我在跳过模型中的某些验证方法中找到了一半的答案

attr_accessor :automated_creation
validate :check_automated_name, unless: :automated_creation

def check_automated_name
#...
end

在我的控制器中:

def get_automated_group
    name = "automated_group_#{product.id}"
    group = Group.find(name: name).first
    group Group.new(automated_creation: true) unless group.blank?
    returrn group
end

更新时:我将检查 check_automated_name 函数是否发生了任何名称更改:

group.name_changed?

所以除了'name'之外的任何其他东西都可以更新,唯一的创建方式是来自rails本身。

于 2013-07-07T11:36:49.457 回答