【发布时间】:2014-09-25 01:37:45
【问题描述】:
我希望我的用户对象能够与许多地址相关联,并将其中一个地址作为主地址。
我试图在不使用布尔值表示主地址的情况下执行此操作,而是同时使用 has-many 和 has-one 关联 - 根据 PinnyM 在以下 SO 中的第一种方法:Rails model that has both 'has_one' and 'has_many' but with some contraints
但我似乎无法让它工作。
我的迁移:
class User < ActiveRecord::Migration
def change
create_table(:users) do |t|
t.integer :primary_address_id
t.string :name
end
end
end
class Address < ActiveRecord::Migration
def change
create_table(:addresses) do |t|
t.integer :user_id
t.string :address
end
end
end
我的模型:
class User
has_many :addresses
has_one :primary_address, :class_name => "Address"
end
class Address
belongs_to :user
has_one :user
end
这允许我通过执行 user.addresses 来使用 has_many 关联,但我似乎无法访问只有一个关联。我试过这样做:
user.primary_address
user.addresses.primary_address
user.addresses.primary_address.first
我真的不明白如何正确设置这些关联或如何访问它们。非常感谢您的帮助!
【问题讨论】:
标签: ruby-on-rails-4 associations