Techioz Blog

Rails でモデル内の必須フィールドのリストを取得するにはどうすればよいですか?

概要

私は Ruby on Rails を使用しており、さまざまな必須フィールドを持つモデルがあります。必要なフィールドのみのリストを取得する方法はありますか? 必要なフィールドだけが必要なため、ModelName.validators が機能するとは思えません。 ModelName.column_names も試しましたが、すべてのフィールドが表示されます。

解決策

ModelName.validators は、返されたリストを存在バリデーターに対してフィルターすると機能するようです。

ModelName.
  validators.                                        
  grep(ActiveRecord::Validations::PresenceValidator). # only `presence`
  flat_map(&:attributes)                              # only their attribute names