1. ホーム
  2. ruby-on-rails

[解決済み] あるモデルが特定のカラム/属性を持っているかどうかを確認するには?

2022-07-09 14:14:25

質問

ハッシュをループして、各キーがモデルテーブルに存在するかどうかをチェックし、そうでない場合はキー/値を削除する必要があるメソッドがあります。

例えば

number_hash = { :one => "one", :two => "two" }

で、Numberテーブルには:1カラムしかないので、:2が削除されます。

モデルが属性を持っているかどうかを確認するにはどうすればよいですか?

どのように解決するのですか?

クラスの場合

使用方法 Class.column_names.include? attr_name ここで attr_name は属性の文字列名です。

この場合 Number.column_names.include? 'one'

インスタンスの場合

使用する record.has_attribute?(:attr_name) または record.has_attribute?('attr_name') (Rails 3.2+) または record.attributes.has_key? attr_name .

この場合 number.has_attribute?(:one) または number.has_attribute?('one') または number.attributes.has_key? 'one'