我的程序正在尝试自动创建一些组,前缀为“automated_group”,加载所有组时不会显示,无法编辑,还有更多内容。但我必须限制用户这样做。但是如果我创建一个验证函数,它不会让我的应用程序这样做,并且 group.save 返回 false。即使更新其他属性,它也不会让我保存它,因为名称不会验证。
还有其他方法吗?有时使用验证,或者检查谁在更改值?
提前致谢
我的程序正在尝试自动创建一些组,前缀为“automated_group”,加载所有组时不会显示,无法编辑,还有更多内容。但我必须限制用户这样做。但是如果我创建一个验证函数,它不会让我的应用程序这样做,并且 group.save 返回 false。即使更新其他属性,它也不会让我保存它,因为名称不会验证。
还有其他方法吗?有时使用验证,或者检查谁在更改值?
提前致谢
您可以使用像 cancan ( https://github.com/ryanb/cancan ) 这样的权限系统。然后你可以像这样定义一些东西:
can :manage, Group, automated_group: false
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本身。