如何将无效记录添加到 has_many :through association

How to add invalid records to has_many :through association

我有一个房间模型 has_many-association。

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

living_room 不是有效的数据集。所以如果我把房间加到房子里

house << dining_room
house << living_room

未添加 living_room,因为它无效。

将现有记录添加到 has_many-association 时如何跳过验证?

如果 living_room 属于某个房子,您只需更新该客厅记录中的 house_id 即可匹配您希望它属于的房子。

您可以尝试这样将 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)