Rails为此模型建立关系的方式

时间:2011-06-23 14:17:50

标签: ruby-on-rails

在Ruby和Rails中成为新手,我不知道如何在我的标题中解释这一点,所以我会在这里做。我的目标是创建许多产品,每个产品只有一个整体位置。

我有一个Product MVC,表格的快速丑陋草图将是这样的:

整体位置

form_for @product

<p>
<%= f.label :location %>:<br>
<%= f.text_field :location %>
</p>

产品一

<p>
<%= f.label :name %>:<br>
<%= f.text_field :name %>
<%= f.label :price %>:<br>
<%= f.text_field :price %>
</p>

产品二(相同)

<p>
<%= f.label :name %>:<br>
<%= f.text_field :name %>
<%= f.label :price %>:<br>
<%= f.text_field :price %>
</p>

产品三(相同)

<p>
<%= f.label :name %>:<br>
<%= f.text_field :name %>
<%= f.label :price %>:<br>
<%= f.text_field :price %>
</p>

<%= f.submit %> 
<% end %>

你如何设置它以便这种关系可以发生,所以当用户在表单上创建3个产品时,他只有一个位置可以用于所有3个产品?

2 个答案:

答案 0 :(得分:2)

这样:

class Location < AR::Base
  has_many :products
end

class Product < AR::Base
  belongs_to :location
end

然后,您将设置嵌套资源路由:

resources :locations do
  resources :products
end

当您添加位置时,可以使用fields_for为其添加产品。

答案 1 :(得分:0)

在这种情况下是否需要使用nested_attributes_for ..