小さな問題が 1 つあります。解決できません。関連付けられたモデルが少なくとも 1 つあることを検証したいと考えています。以下のように
class User < ActiveRecord::Base
has_many :things
validates_presence_of :things
end
class Thing < ActiveRecord::Base
belongs_to :user
end
を介してモデルを更新するとうまくいきます#update_attributes
が、単純に を設定@user.things = []
すると、データベースで無効なデータを取得できます。これを解決するための私の回避策は、セッターメソッドを上書きすることです
def things=(val)
begin
if val.blank?
errors.add(:things, "not valid")
raise SomeError
end
super
rescue SomeError
false
end
end
しかし、どういうわけかこれは正しく感じられません。検証および/またはコールバックを介して同じ結果をアーカイブする方法はあり#things=
ませval
んか@user.things
?@user.things
@user.things(true)