Ruby on rails Rails 3-如何表示属于某个城市的用户模型?

Ruby on rails Rails 3-如何表示属于某个城市的用户模型?,ruby-on-rails,ruby-on-rails-3,rails-activerecord,Ruby On Rails,Ruby On Rails 3,Rails Activerecord,我有一个用户模型,每个用户都有一个公司名称和与之关联的城市。对于该项目,我需要根据城市列出每个用户。e、 g:全市/旧金山,全市/纽约。目前,这些都是我们心目中的模型 class User < ActiveRecord::Base attr_accessible :name, :company belongs_to :city end class City < ActiveRecord::Base attr_accessible :name, :slug has

我有一个用户模型,每个用户都有一个公司名称和与之关联的城市。对于该项目,我需要根据城市列出每个用户。e、 g:全市/旧金山,全市/纽约。目前,这些都是我们心目中的模型

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

  belongs_to :city
end

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

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


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

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


以下是
接受
的嵌套属性的文档,该方法应该可以帮助您

首先,您需要向城市模型中添加以下属性:城市的属性和城市的属性:

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

  has_many_users
end
class 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 

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