首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails:获取一个模型来命名自己

Rails:获取一个模型来命名自己
EN

Stack Overflow用户
提问于 2015-03-30 13:34:58
回答 1查看 42关注 0票数 0

我有三种型号,housesusers & rooms

房间是一个相当无聊的模型,它主要用于指定用户在一所房子内所占的房间。除了联想,它只有一个记录,名字。名称是用户可以设置的令人厌烦的名称。“怪怪的气味阁楼”或只是无聊的旧“1号房间”。

如果用户没有指定名称(如果房间里没有人可以让我做一些更智能的自动命名),我想让模型自己命名。

具体来说,我希望它能做到:每当用户调用没有属性的Room.new()时,它(如第1室、第320室、第12321室)。

我遇到麻烦的地方是如何使i连接到相关的房子。所以可能有很多人被称为“1号房间”,但他们都必须在不同的房子里,在每个房子里,Room #{i}需要有一个独特的名字……

我知道用验证(唯一性)来做其中的一些事情,但是.在哪里,我会放置一个枚举数来计算一所房子中已经存在的房间的数量,并在命名任何新的附加物时做i += 1

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-30 13:51:02

一个选项是在您的after_create模型中创建一个Room回调:

代码语言:javascript
运行
复制
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来调整它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29347647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档