Я хотел бы использовать ActiveRecord в своем приложении Rails, но я бы хотел кодировать ограничения данных в базе данных PostgreSQL, а не в моделях ActiveRecord.
Например, если у меня есть модель, сгенерированная скаффолдом,
rails generate scaffold User name:string email:string yearofbirth:integer
Я хочу убедиться, что имя достаточно длинное.например,
class User < ActiveRecord::Base
validates :name, :length => { :maximum => 140 }
validates_uniqueness_of :name
validates_numericality_of :yearofbirth, :greater_than_or_equal_to => 1900
end
Эти проверки хороши тем, что ActiveRecord выдает на экран несколько хороших сообщений об ошибках, если кто-то пытается добавить неверные данные.
Однако я хотел бы закодировать правила в самой базе данных и заставить базу данных выдавать такие же красивые и информативные сообщения об ошибках в ActiveRecord, которые затем передают их на уровень представления.Например,
create table "Users" (
id integer unique,
name varchar(140) unique check(length(name)<140),
email varchar(255),
yearofbirth integer check (yearofbirth >= 1900)
);
Что мне нужно сделать в PostgreSQL или ActiveRecord, чтобы это произошло?Когда я попробовал его с помощью инструмента pgAdmin III, он выдавал сообщения об ошибках, но я бы хотел их настроить.
Кроме того, есть ли способ кодировать эти правила базы данных прямо в файлы миграции базы данных в Ruby?
Я ценю любую помощь, которую вы можете мне оказать.