使用a有很多并且在同一个模型上有一个关联

时间:2014-09-24 04:29:59

标签: ruby-on-rails-4 associations

我希望我的用户对象能够与许多地址相关联,并将其中一个地址作为主要地址。

我尝试这样做而不使用布尔来表示主地址,而是同时使用has-many和has-one关联 - 按照PinnyM在下面的SO中的第一种方法:{ {3}}

但我似乎无法让它发挥作用。

我的迁移:

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

我真的不明白如何正确设置这些关联或如何访问它们。非常感谢你的帮助!

1 个答案:

答案 0 :(得分:2)

刚刚创建了您正在使用的模型和关联。我不明白为什么它不适用于你的情况,因为我可以访问primary_address。这是我用来使用rails console访问它的代码。注意:我已经提前创建了一个用户和几个地址。

# in case if you have user with id = 1    
User.find(1).primary_address
# or another example
User.first.primary_address

我不认为您的关联会允许此次通话:

user.addresses.primary_address 
user.addresses.primary_address.first