Railsのmodelの検証で、
class Sample < ActiveRecord::Base belongs_to :hoge belongs_to :fuga attr_accessible :hoge, :fuga validates :hoge, :presence => true, validates :fuga, :presence => true, :uniqueness => {:scope => [:hoge]} end
でRSpecのテストを通したところ、
undefined method `text?’ for nil:NilClass
というエラーが発生してしまった。
なんでやねん、と思っていたら、他のテストのところで、
PG::Error: ERROR: column samples.fuga does not exist
と言われていた。
どうも:uniquenessを指定する場合は、validatesで指定するのはカラム名でないといけないようだ。
validates の:fugaを:fuga_id,:uniquenessのところも:hoge_idに修正したところ、テストが通った。
class Sample < ActiveRecord::Base belongs_to :hoge belongs_to :fuga attr_accessible :hoge, :fuga validates :hoge, :presence => true, validates :fuga_id, :presence => true, :uniqueness => {:scope => [:hoge_id]} end
割と悩んでしまった。