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