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



Rails新手正在为一个小项目而挣扎。我正在为一个我喜欢的棋盘游戏创建一个简单的造船工具,作为练习,我有点迷失了方向。

我想做什么?-在创建我的船舶模型记录后,我想创建将与船舶模型关联的特征模型记录。更新船舶模型记录后,我想更新或创建将与船舶模型记录关联的特征模型。

我试过什么?-将特征作为列变量添加到每个船舶模型记录中。我不认为这是存储我的每个船舶模型特征的最有效的方法。我已经建立了一个特征模型,但我不知道如何导航到它并将其与我的船舶模型关联

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

即如果

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

ship_traits=[t1,t4]。

最后,我可以在船图页面上调用特征,而不必迭代每一个特征,只需迭代与我当前模型相关的特征。

我不知道该如何在模型之间建立关联。任何关于我应该研究的方向的帮助或善意建议都将受到热烈欢迎。我为我的含糊提前道歉,再说一遍,我完全是个新手。

干杯,Nick

我不能100%确定这会解决你的问题,但你可以这样做:

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:贯穿关系。如果是这样的话,请告诉我,我会再次回答。或者你可以看看这个:http://guides.rubyonrails.org/association_basics.html

最新更新