自定义约束 - postgres

时间:2015-08-14 06:45:18

标签: ruby-on-rails database postgresql

这更具有概念上的疑问。有没有什么方法可以应用约束,字段的值不能为空?我知道可以使用NOT NULL。但我想检查字段是否只有空格,它也拒绝该值。例如,应拒绝" "

2 个答案:

答案 0 :(得分:1)

在您的模型类中,您可以添加如下验证:

validates :field_name, presence: true

来自Rails Documentation

  

此帮助程序验证指定的属性不为空。它   使用空白?检查值是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, ' ') != '')
);
相关问题