这更具有概念上的疑问。有没有什么方法可以应用约束,字段的值不能为空?我知道可以使用NOT NULL
。但我想检查字段是否只有空格,它也拒绝该值。例如,应拒绝" "
。
答案 0 :(得分:1)
在您的模型类中,您可以添加如下验证:
validates :field_name, presence: true
此帮助程序验证指定的属性不为空。它 使用空白?检查值是nil还是空白的方法 string,即一个空的或由其组成的字符串 空格。
这将确保该字段的值不能为空。
创建并保存新记录将向其发送SQL INSERT操作 数据库。更新现有记录将发送SQL UPDATE 操作而不是。验证通常在这些命令之前运行 被发送到数据库。如果任何验证失败,则对象将是 标记为无效,Active Record将不执行INSERT或 更新操作。这样可以避免在中存储无效对象 数据库中。
有关详细信息,请参阅this。
答案 1 :(得分:0)
您可以添加下一个psql约束,以防止在数据库中插入null或“”字符串而不更改应用程序逻辑。
CREATE TABLE test (
string character varying(16) NOT NULL,
CONSTRAINT good_string CHECK (rtrim(string, ' ') != '')
);