我有三个型号,houses
,users
& rooms
。
房间是一个非常无聊的模型,它主要用于指定用户在房屋内占用的房间。除了协会,它只有一个记录,名称。名称是用户可以设置的无聊指定,例如。 “时髦闻起来的阁楼房间”或只是无聊的旧“房间1”。
如果用户没有归档名称(如果房间没有任何占用者可以让我做一些更智能的自动命名),我希望模型能够为自己命名。
具体来说,只要用户在没有属性的情况下调用Room.new(),我就希望它:Room #{i}
(例如房间1,房间320,房间12321)。
我遇到麻烦的是如何使i
连接到相关的房子。所以可能会有许多人被称为“房间1”,但他们都必须在不同的房子里,在每个房子内Room #{i}
需要一个独特的名字......
我知道要通过验证(唯一性)来完成其中的一部分,但是如何...以及在哪里,我会将一个枚举器用于计算已经存在于房屋中的房间数量,并且当它出现时{I} i += 1
周围命名任何新的添加?
答案 0 :(得分:1)
一个选项是在Room
模型中创建一个after_create回调:
class Room < ActiveRecord::Base
belongs_to :house
after_create :name_room
def name_room
if name.blank?
update_column(:name, default_name)
end
end
def default_name
"Room #{rooms_in_house} of house #{self.house.id}"
end
def rooms_in_house
self.house.rooms.count
end
end
希望我理解你的问题并给你一些有用的东西......但看起来你甚至不必使用可枚举的count
块!
如果房间数量不正确,您只需在方法中添加1即可在rooms_in_house
中进行调整。