我正在设置我的导轨模型,我有一个User
,他们有很多addresses
,但其中一个是他们的主要地址。我希望能够像User.first.primary_address_id
和User.first.primary_address
一样访问它,以获取相关的Address
模型。
是否有“轨道方式”来设置它?
我知道我可以为primary_address_id
创建一个User
字段,并在AR回调中填充它。但这不会让我做User.first.primary_address
或者我可以创建“User has_many Addresses”以及“User has_one Address”吗?或类似的东西?
答案 0 :(得分:1)
我知道我可以为User创建一个primary_address_id字段并在AR回调中填充它。但这不会让我做像User.first.primary_address
这样的事情
这是正确的方法。
User.first.primary_address
如果有第一个用户的主要地址,则返回第一个用户的主要地址;如果没有,则返回nil。
#user.rb
has_one :primary_address
#address.rb
attr_accessor :primary #this allows you to have a primary field of the address form
after_save :check_if_primary
def check_if_primary
user.update_attribute(:primary_address, self) if primary
end
答案 1 :(得分:0)
一种简单的方法是在地址模型中有一个primary_address布尔列。
要访问用户的主要地址对象,您可以在用户模型中定义primary_address方法:
class User < ActiveRecord::Base
def primary_address
addresses.where(:primary_address => true).first
end
end
因为,primary_address方法是一个实例方法,它允许你做
User.first.primary_address