【问题标题】:Rails 3 - How to represent User model which belongs_to a City?Rails 3 - 如何表示属于城市的用户模型?
【发布时间】:2013-02-08 06:55:24
【问题描述】:

我有一个用户模型,每个用户都有一个公司名称和一个与之关联的城市。对于该项目,我需要根据城市列出每个用户。例如: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

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

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

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 rails-activerecord


    【解决方案1】:

    首先,您需要将accepts_nested_attributes_for 和attributes_for :cities_attributes 添加到您的城市模型中:

    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 
    

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-23
        • 2013-03-21
        • 1970-01-01
        • 2018-10-12
        • 2015-02-05
        • 2019-08-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多