我有三种型号,houses
,users
& rooms
。
房间是一个相当无聊的模型,它主要用于指定用户在一所房子内所占的房间。除了联想,它只有一个记录,名字。名称是用户可以设置的令人厌烦的名称。“怪怪的气味阁楼”或只是无聊的旧“1号房间”。
如果用户没有指定名称(如果房间里没有人可以让我做一些更智能的自动命名),我想让模型自己命名。
具体来说,我希望它能做到:每当用户调用没有属性的Room.new()时,它(如第1室、第320室、第12321室)。
我遇到麻烦的地方是如何使i
连接到相关的房子。所以可能有很多人被称为“1号房间”,但他们都必须在不同的房子里,在每个房子里,Room #{i}
需要有一个独特的名字……
我知道用验证(唯一性)来做其中的一些事情,但是.在哪里,我会放置一个枚举数来计算一所房子中已经存在的房间的数量,并在命名任何新的附加物时做i += 1
?
发布于 2015-03-30 05:51:02
一个选项是在您的after_create模型中创建一个Room
回调:
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
块!
如果房间数不正确,那么您可以在rooms_in_house
中通过在方法中添加1来调整它。
https://stackoverflow.com/questions/29347647
复制