私は2つの関連するモデル:Apartment
とLessor
を持っています。そしてフォームからLessor
を作成する必要があります。 Lessor
モデルでRailsで関連付けを検証する最良の方法は何ですか?
belongs_to :lessor
before_save :save_lessor
...
def lessor_cellphone= val
@cellphone = val
end
...
private
def save_lessor
if Lessor.exists? :cellphone => @cellphone
self.lessor = Lessor.find_by_cellphone @cellphone
else
self.create_lessor :cellphone => @cellphone
end
@cellphone = nil
end
:
validates :cellphone, :format => {:with => /\d{11}/}, :uniqueness => true
has_many :apartments, :dependent => :nullify
しかし、私は無効cellphone
でApartment
を作成しようとしたとき、検証が失敗したbecouse、Lessor
が作成されていないが、 `アパートを作成するApartment
モデルで
。
フォームのcellphone
(およびそれ以上)と上昇エラーを検証する最も良い方法は何ですか?
存在していた賃貸人にアパートを関連付けすることが可能です'accepts_nested_attributes_for'を使用して、携帯電話のレコードがすでに存在していますか? –
もちろん。新しいレコードが作成された場合、または既存のレコードが更新された場合も同じです。正しいレコードで 'ビルド 'するだけでよいのです。 – Vapire