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]。
最后,我可以在我的船舶图表页面上调用这些特征,而不必遍历每个特征,只是与我当前模型相关的特征。
我对如何建立模型之间的关联感到很遗憾。对我应该研究的方向提出任何帮助或善意的建议都会受到热烈欢迎。我提前为我的模糊道歉,再次,我是一个完整的新手。
干杯, 尼克
答案 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