QA@IT

Railsのバリデーションで他の関連テーブルの存在チェック

5619 PV
  • Rails 4.1.4

バリデーションの方法で質問です。

Accountモデルはservice_idのcolumnを持っています。
そしてhas_manyでservicesと関連があり、そのservicesに存在するidのみを
service_idに許容するvalidationについてです。

以下のように実装してみたのですが、
Rails標準でもっと簡単にありそうな気がしたので質問させていただきました。
標準のメソッドでチェック可能でしょうか?

class Account < ActiveRecord::Base
  has_many :services
  validate :exsitence_of_service_id

  private
    def exsitence_of_service_id
      errors.add(:service_id, :inclusion) unless services.pluck(:id).include?(service_id)
    end
end

回答

少なくとも、pluck(:id) しているところは _ids と書けるはずです。

編集 履歴 (0)
  • ありがとうございます。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。