validates :username, exclusion: { in: %w(about account root etc..)
我正在使用上面的内容禁止用户使用保留的用户名,但他们仍然可以在下划线之间使用它们(我允许在用户名中使用下划线)
无论如何我可以让rails验证保留的用户名,即使它是在下划线之前或之后?
谢谢
答案 0 :(得分:2)
您可以创建一种方法来为您进行验证,并使用普通的旧ruby。正如您所见in the docs here
对你来说这看起来像这样:
$data['metadata'][index]
这样做可以说模型需要使用 validate :my_validation_method
def my_validation_method
errors.add(:username, :exclusion) if some_condition
end
以及所有正常的其他验证进行验证。然后,您手动将错误的字段(在您的情况下:用户名)添加到模型的错误中,因此验证失败。
另请注意my_validation_method
而不是validate
。
您的另一个问题基本上是如何检查输入的值是否包含某些单词。你可以这样做:
validates
这里我添加了一个条件来添加错误,我们循环遍历禁止列表中的每个单词并检查用户名是否包含该单词。请注意,“blablaluke”也会失败!所以它并不完全是你想要的。但是你当然可以自己玩这个。
您执行的规范化程度(例如剥离其他字符)可以为您提供更多控制权,例如阻止def my_validation_method
forbid = %w(luke darth artoo fry bender)
errors.add(:username, :exclusion) if forbid.find { |w| username.include?(w) }
end
等。
更新: 你可以剥掉这样的字符:
ad_min
您可以在username.tr('-_+$^&', '')
。
答案 1 :(得分:0)
答案 2 :(得分:0)
我可能会使用正则表达式。像这样:
var rename = require("gulp-rename");
gulp.task('styles:cssmin', function(){
return gulp.src('src/css/*.css')
.pipe(concat('main.css')) // combine them
.pipe(cssmin()) // minify them
.pipe(rename({
dirname: "assets/css" //manually fixing path for rev-manifest
}))
.pipe(rev('path/to/your/rev/rev-manifest.json')) // Specify manifest location
.pipe(gulp.dest('assets/css')) // write rev'd assets
.pipe(rev.manifest({
merge: true // Merge because this happens for .js and images too
}))
.pipe(gulp.dest('./')); // write manifest
});