Быть хорошим разработчиком - это знать, когда не пытаться уменьшить дублирование. Технически говоря, наличие нескольких property
операторов является формой дублирования, но это настолько безобидно, что не стоит тратить время на удаление. Это особенно верно, когда рассматривается в свете альтернативного подхода, который здесь подразумевается, который я нахожу запутанным и трудным для чтения.
В конечном итоге это ненужная идиома, которая усложнит поддержку вашего кода. property
заявления следует оставить в покое, и я советую вам не придерживаться другого подхода.
Если вам по какой-то причине необходимо сделать это, вы можете использовать:
[
[:id, Serial],
[:title, Text, :required => true],
[:url, String, :required => true],
[:points, Integer, :default => 0]
].each { |args| property *args }