我有以下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
在用于创建酒店的表单中,我为联系人模型输入姓名和电子邮件,但为地址模型输入电话。
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、Address、Contact 的空白实例保存 Hotel 实例。然后我必须更新联系人和地址的属性,然后
@hotel.save :validate => false
以确保原始表单数据按预期完全保存。
毫无疑问,这是一段非常糟糕的代码。谁能告诉我如何清理这个?