2

我有一个用户模型,每个用户都有一个公司名称和一个与之关联的城市。对于该项目,我需要根据城市列出每个用户。例如:citywise/san-francisco、citywise/new-york。目前这些是心目中的模型

class User < ActiveRecord::Base
  attr_accessible :name, :company

  belongs_to :city
end

class City < ActiveRecord::Base
  attr_accessible :name, :slug

  has_many :users
end

此外,城市不能是预定义的列表。它应该在数据库中创建每个用户时创建。

那么,如何在创建/更新用户时访问或创建城市?

4

2 回答 2

1

首先,您需要将 Accepts_nested_attributes_for 和 attributes_for :cities_attributes 添加到您的 City 模型中:

class City < ActiveRecord::Base
  attr_accessible :name, :slug, attributes_for :cities_attributes
  accepts_nested_attributes_for :cities

  has_many_users
end

由于您现在可以访问 City 模型中的所有属性,因此您可以使用字段将这些包含在表单中。

<%= form_for@city do |f| %>
   # City attributes
  <%= f.fields_for :users do |c| %>
     # User attributes
  <% end %>
<% end %>

在您的索引视图中,您还可以使用嵌套:

<% @cities.each do |city| %>
  # city attributes goes here
  <% city.users.each do |user| %>
    # user attributes goes here 

第一行显示您定义的每个城市的所有属性,而第二行显示特定城市的每个用户的属性。

于 2013-02-08T07:36:05.830 回答
0

您需要查看用户模型上的嵌套属性。

这是 的文档accepts_nested_attributes_for,该方法应该可以帮助您。http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html

于 2013-02-08T06:58:27.793 回答