我有以下4種型號跳過驗證在關聯模型的一些成員在創建/更新
Hotel (name)
has_one :address
has_one :contact
has_one :bank_account
validates_presence_of :name
def build_dependencies
build_contact
build_address
build_bank_account
end
Address (phone, street_address, hotel_id)
belongs_to :hotel
validates_presence_of :phone, :street_address
Contact (name, email, hotel_id)
belongs_to :hotel
validates_presence_of :name, :email
BankAccount (name, number, hotel_id)
belongs_to :hotel
validates_presence_of :name, :number
在用來創建一個酒店一個形式,我需要輸入兩個名字和電子郵件的聯繫模式,但只有Address模式的電話。
HotelController#new
@hotel = Hotel.new
@hotel.build_dependencies #this creates empty Contact and Address to generate the form fields
#render the form to create the hotel
HotelController#create
#receive form data
@hotel = Hotel.new
@hotel.build_dependencies
@hotel.save :validate => false
@hotel.attributes = params[:hotel]
@hotel.save :validate => false
這是我能夠創建一個包含聯繫信息,地址和空銀行賬戶電話的酒店的唯一方法。我不得不打電話
@hotel.save :validate => false
第一次保存酒店實例與BankAccount,地址,聯繫人的空白實例。然後我必須update_attributes的聯繫人和地址,然後
@hotel.save :validate => false
確保原始表單數據完全按預期保存。
這毫無疑問是一段非常糟糕的代碼。誰能告訴我如何清理這個?
感謝您的回答,但這是我做的...... – Rahul