需要帮助建立模型之间的关系

时间:2012-03-23 02:43:30

标签: ruby-on-rails-3

Rails新手在这里与一个小项目挣扎。我正在为一个棋盘游戏创建一个简单的造船工具,我喜欢这个练习,而且我有点失落。

我想做什么? - 创建我的Ship模型记录后,我想创建将与Ship模型关联的Traits模型记录。更新Ship模型记录后,我想更新或创建将与Ship模型记录关联的Traits模型。

我尝试了什么? - 将特征作为列变量添加到每个Ship模型记录中。我不认为这是存储每个Ship模型的特征的最有效方式。我设置了Traits模型,但我不知道如何导航到它并将其与我的Ship模型相关联

完成后我想要什么? - 存储在每个Ship模型记录中的数组,该数组将列出每个货船的属性及其对应的值

即。如果

trait_list = [trait1 => t1,trait2 => t2,trait3 => t3,trait4 => T4]

ship_traits = [t1,t4]。

最后,我可以在我的船舶图表页面上调用这些特征,而不必遍历每个特征,只是与我当前模型相关的特征。

我对如何建立模型之间的关联感到很遗憾。对我应该研究的方向提出任何帮助或善意的建议都会受到热烈欢迎。我提前为我的模糊道歉,再次,我是一个完整的新手。

干杯, 尼克

1 个答案:

答案 0 :(得分:1)

我不是百分百肯定这会解决你的问题,但你可以这样做:

class Ship < ActiveRecord::Base
  has_many :traits
  accepts_nested_attributes_for :traits
end

class Trait < ActiveRecord::Base
  belongs_to :ship
end


# In your form
- form_for @ship do |f|
  - f.fields_for :traits do |ff|
    = ff.label :trait_name
    = ff.text_field :trait_name

# this will return all the traits for model defined as @ship
@ship.traits 

我知道它不是Ship模型中的数组,但我听说将模型中的列设置为数组有点棘手。如果你想让这些特征是独一无二的(因为许多船只可以有许多特征,而这些特征可以属于许多不同的船只),那么你将拥有一个has_many:through关系。如果是这样的话,请告诉我,我会再次回答。或者你可以看看这个:http://guides.rubyonrails.org/association_basics.html