2016-11-01 4 views
0

У меня есть модель дома с ассоциацией has_many для комнат.Как добавить недопустимые записи в has_many: через ассоциацию

house = House.find 1 
dining_room = Room.find 1 
living_room = Room.find 2 

Живая комната не является действительным набором данных. Поэтому, если я добавлю комнаты в дом

house << dining_room 
house << living_room 

живая комната не была добавлена, так как она недействительна.

Как я могу пропустить проверку при добавлении существующей записи в ассоциацию has_many?

+0

Как сохранить любую комнату, если они недействительны? –

+0

'living_room = Room.find 2'? это действительная запись на вашем столе в номерах? – sa77

+0

@ j-dexx я добавил проверку после того, как данные были вставлены – Christian

ответ

1

вы можете попробовать что-то вроде этого, чтобы связать Room объект проверки пропуска House объекта:

объявить что-то подобное в room.rb

def associate_room_to_house!(house) 
    self.house_id = house.id 
    self.save(:validate => false) 
end 

, а затем использовать этот метод на вашем недействительном объекте номера.

house = House.find 1 
living_room = Room.find 2 

living_room.associate_room_to_house!(house) 
1

Если живая комната принадлежит к дому, вы можете просто обновить house_id на этой записи в гостиной, чтобы она соответствовала дому, к которому вы хотели бы относиться.