我如何为belongs_to构建rails模型关联以从其父级获取属性

时间:2015-04-06 17:28:00

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

我正在开发一个有两个模型的项目:用户和城市。

class User < ActiveRecord::Base
    belongs_to :city
end

class City < ActiveRecord::Base
    has_many :users
end

我将城市作为整数(城市的主键)保存到用户。用户只能有一个城市,而城市表具有预先填充的值:

id | name
1  | New York
2  | Chicago
3  | Boston

我需要什么样的关联(并且可能),以便我可以调用类似下面的内容并获取城市而不是id?

user = User.find(id)
user.city
>> New York

2 个答案:

答案 0 :(得分:1)

使用用户的实例,您只需拨打user.city.name即可获取用户所在城市的名称:

user = User.find(1)
puts user.city.name

答案 1 :(得分:1)

认识到这已经得到了回答,我还要补充一点,如果你有很多逻辑要求这些数据不包含在模型本身中,那么添加一个调用关系的实例方法是有意义的。方法。如果该关系的性质发生变化,这样可以更容易地进行重构。