我有一个用户模型和一个帐户模型。用户拥有多个帐户,并且这些帐户属于一个用户。我有所有的模型和协会。现在我想让其中一个帐户成为“主帐户”。建立关联的最佳方式是什么?我在我的用户表中添加了一个primary_account_id列,并设置了这样的关联,但它不起作用。有小费吗?模型中的多个关联
class User < ActiveRecord::Base
has_many :accounts
has_one :primary_account, :class_name => "Account"
end
class Account < ActiveRecord::Base
belongs_to :user
end
编辑
我看到这个问题Rails model that has both 'has_one' and 'has_many' but with some contraints这是非常相似,第二个答案让我尝试了建议。然而,当我使用它轨忽略了我所做的列,只是抓住表中的第一个:
>> u = User.find(1)
User Load (3.9ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 1]]
=> #<User id: 1, email: "[email protected]", created_at: "2012-03-15 22:34:39", updated_at: "2012-03-15 22:34:39", primary_account_id: nil>
>> u.primary_account
Account Load (0.1ms) SELECT "accounts".* FROM "accounts" WHERE "accounts"."user_id" = 1 LIMIT 1
=> #<Account id: 5, name: "XXXXXX", created_at: "2012-03-16 04:08:33", updated_at: "2012-03-16 17:57:53", user_id: 1>
>>
可能:'has_one:primary_account,:class_name =>“Account”,:conditions =>“users.primary_account_id = accounts.id”'。 – Zabba 2012-03-26 01:03:20
好猜,但没有:'帐户加载(0.2ms)SELECT“accounts”。* FROM“accounts”WHERE“accounts”。“user_id”= 1 AND(users.primary_account_id = accounts.id)LIMIT 1 SQLite3 :: SQLException:no such column:users.primary_account_id:SELECT“accounts”。* FROM“accounts”WHERE“accounts”。“user_id”= 1 AND(users.primary_account_id = accounts.id)LIMIT 1' – jasonlfunk 2012-03-26 01:10:42