Ruby on rails 用户的活动记录关联,并具有多个地址,其中一个地址标记为主地址
我正在尝试设置rails模型,其中我有一个Ruby on rails 用户的活动记录关联,并具有多个地址,其中一个地址标记为主地址,ruby-on-rails,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby On Rails 3,Activerecord,我正在尝试设置rails模型,其中我有一个用户,他们有许多地址,但其中一个是他们的主地址。我希望能够像这样访问它,User.first.primary\u address\u id和User.first.primary\u address以获取相关的地址模型 是否有“rails方式”来设置此功能 我知道我可以为User创建一个primary\u address\u id字段,并将其填充到AR回调中。但这不允许我做类似于User.first.primary\u address 或者我可以创建“用户
用户
,他们有许多地址
,但其中一个是他们的主地址。我希望能够像这样访问它,User.first.primary\u address\u id
和User.first.primary\u address
以获取相关的地址
模型
是否有“rails方式”来设置此功能
我知道我可以为User
创建一个primary\u address\u id
字段,并将其填充到AR回调中。但这不允许我做类似于User.first.primary\u address
或者我可以创建“用户有多个地址”和“用户有一个地址”这样的关联吗??还是类似的
我知道我可以为用户创建一个主地址id字段,并将其填充到AR回调中。但这不允许我做像User.first.primary\u地址这样的事情
这是正确的方法
User.first.primary_address
如果第一个用户有一个主地址,则返回第一个用户的主地址;如果没有,则返回零
#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
我知道我可以为用户创建一个主地址id字段,并将其填充到AR回调中。但这不允许我做像User.first.primary\u地址这样的事情
这是正确的方法
User.first.primary_address
如果第一个用户有一个主地址,则返回第一个用户的主地址;如果没有,则返回零
#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
一种简单的方法是在地址模型中有一个primary_address布尔列 要访问用户的主地址对象,可以在用户模型中定义主地址方法:
class User < ActiveRecord::Base
def primary_address
addresses.where(:primary_address => true).first
end
end
一种简单的方法是在地址模型中有一个primary_address布尔列 要访问用户的主地址对象,可以在用户模型中定义主地址方法:
class User < ActiveRecord::Base
def primary_address
addresses.where(:primary_address => true).first
end
end
我在哪里定义它以及它是如何关联的?您可以将它定义为一个has-one关系。您在哪里定义它取决于您的用例,但是如果您将它定义为地址保存的一部分,那么您使用回调是正确的。检查我的编辑。我在哪里定义它以及它是如何关联的?您可以将它定义为一个has-one关系。您在哪里定义它取决于您的用例,但是如果您将它定义为地址保存的一部分,那么您使用回调是正确的。检查我的编辑。