需要一些帮助链接到Rails中的模型视图

时间:2011-05-18 22:08:11

标签: ruby-on-rails views models

我正在研究Dungeons and Dragons角色数据库应用程序。我有一个角色模型和几个属于具有has_one关联的角色的模型,如HitPoints,ArmorClass等。这些都是从“角色”视图构建,编辑和显示的。但是,我想创建包含属于Character模型的更多信息的新页面。我希望视图顶部有一个链接,将用户带到设备页面,该页面上显示单独的模型,如武器,装甲,齿轮等。

这是我需要一些指导的地方。 Equipment页面是否属于belongs_to Character的新模型,我只需将Weapon,Armor,Gear等模型加载到Equipment视图中?

如果是这样,这些模型是否与Character模型,Equipment模型或两者都有belongs_to关系?

最后,如果我这样建造它:角色has_one设备和装备has_many武器,武器模型是否也与Character模型有belongs_to关系?

在此先感谢,我希望我想要做的是明确的。我仍然无法用Rails谈论我想要实现的目标。

1 个答案:

答案 0 :(得分:0)

听起来你误解了模特周围的一些概念。例如,HitPointsArmorClass不应该是与has_one Character关联的模型。它们只是Character的属性。所以你的模型看起来应该是这样的:

class Character
  attr_accessor :name, :hit_points, :armor_class

  def initialize(name, hitpoints=10, armor_class=0)
    @name = name
    @hitpoints = hitpoints
    @armor_class = armor_class
  end
  # some other stuff, etc
end

然后您可以这样访问它们:

fighter = Character.new("Conan", 100, 12)
puts "I am #{fighter.name} and I have #{fighter.hit_points} hitpoints."
puts fighter.armor_class  # outputs 12

另外,我说Equipment模型是错误的概念。您需要的是Item模型。你提到的所有东西(武器,盔甲,装备)都只是物品。并且“角色”has_many“项目”更有意义。还有“Item”has_many“Characters”,因为你可能会有多个带有多个项目的角色......所以它可以是多对多关系以保持简单。然后你的“物品”模型可以有一个“ItemType”字段,告诉你它是武器,盔甲,药水等。

因此,您的Item模型看起来像这样

class Item
  attr_accessor :name, :type

  def initialize(name, type)
    @name = name
    @type = type
  end
end

另一个选项,更接近您所说的是添加ItemSet模型。我们将此模型放在CharacterItems之间。这样做可以让你说

  • “Character”has_one“ItemSet”
  • “ItemSet”has_many“Items”
  • 字符“有很多”项目“到”ItemSet“

所以基本上,这表明在你的“世界”中你有很多角色和物品。但每个角色都有一组独特的物品。

这就是我的方式。

在上面的代码中,您需要将has_manyhas_one等属性添加到模型中。我把它留了下来,这样你就可以看到模型本身更容易了,所以你可以弄清楚你想怎么做。