Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 需要帮助建立模型之间的关系吗_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 3 需要帮助建立模型之间的关系吗

Ruby on rails 3 需要帮助建立模型之间的关系吗,ruby-on-rails-3,Ruby On Rails 3,Rails新手正在为一个小项目苦苦挣扎。我正在为一个我喜欢的棋盘游戏创建一个简单的造船工具作为练习,我有点迷路了 我想做什么? -在创建我的船模型记录之后,我想创建将与船模型关联的Traits模型记录。更新船舶模型记录后,我想更新或创建将与船舶模型记录关联的特征模型 我试过什么? -将特征作为列变量添加到每个船舶模型记录中。我不认为这是存储我的每一个船模型特征的最有效的方法。我设置了一个Traits模型,但我不知道如何导航到它并将其与我的船模型关联 吃完后我想要什么? -存储在每个船舶模型记录中

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

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

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

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

i、 e.如果

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

ship_traits=[t1,t4]

最后,我将能够在我的ship diagram页面上调用traits,而不必遍历每一个traits,仅仅是与当前模型相关的traits

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

干杯,
尼克

我不能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 
class Ship

我知道它不是船模型中的数组,但我听说将模型中的列设置为数组有点棘手。如果你希望这些特质是独一无二的(就像在许多船上可以有许多特质,这些特质可以属于许多不同的船),那么你将拥有一种“有很多:通过”的关系。如果是这样的话,让我知道,我会再回答。或者你可以看看这个:

Seanpat,我想这和我想要的非常接近,非常感谢。我尝试了这个,但收到一个错误,指出我的traits表没有ship.id列。所以我想我必须为此进行迁移。根据您的示例,关于关联基础知识的链接更有意义。再次感谢。