关联多个现有记录
Associating multiple existing records
我正在创建一个应用程序,其中一个用户成为帐户的 account_manager。我想要做的是将其他用户添加到该帐户。一个用户只能有一个账户,但一个账户可以有多个用户。
class Account < ActiveRecord::Base
has_many :users
belongs_to :account_manager, :class_name => 'User', :foreign_key => 'account_manager_id'
end
class User < ActiveRecord::Base
has_one :account
我完全坚持的是有一个地方,客户经理可以从下拉列表中 select 用户,输入他们的名字,或者使用其他类型的 selection .如果我尝试在控制台中执行此操作,我添加的每个新用户都会替换最后一个用户而不是添加到它。这是我的帐户架构:
create_table "accounts", force: :cascade do |t|
t.integer "user_id"
t.integer "account_manager_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
我试过使用 collection_select
,但我认为这仅适用于 :though 关联。我也在想我可能需要一个连接 table 但我不知道如何设置它。最让我失望的是我不会创建新对象,我只想将现有用户添加到现有帐户。我只是想找一个可以和我谈谈的人。
在您的 User
模型中:
class User < ActiveRecord::Base
belongs_to :account
end
而在您的问题中,您正在写 has_one
。您不能在一个模型中写 has_many
,而在另一个模型中写 has_one
。一个模型需要belongs_to
。
编辑:
belongs_to
的模型,总是在其table中保存外键。所以 users
会在其中保存 account_id
。为了获得一个帐户的所有用户,您只需执行以下操作:
Account.first.users # As an account `has_many` users
我正在创建一个应用程序,其中一个用户成为帐户的 account_manager。我想要做的是将其他用户添加到该帐户。一个用户只能有一个账户,但一个账户可以有多个用户。
class Account < ActiveRecord::Base
has_many :users
belongs_to :account_manager, :class_name => 'User', :foreign_key => 'account_manager_id'
end
class User < ActiveRecord::Base
has_one :account
我完全坚持的是有一个地方,客户经理可以从下拉列表中 select 用户,输入他们的名字,或者使用其他类型的 selection .如果我尝试在控制台中执行此操作,我添加的每个新用户都会替换最后一个用户而不是添加到它。这是我的帐户架构:
create_table "accounts", force: :cascade do |t|
t.integer "user_id"
t.integer "account_manager_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
我试过使用 collection_select
,但我认为这仅适用于 :though 关联。我也在想我可能需要一个连接 table 但我不知道如何设置它。最让我失望的是我不会创建新对象,我只想将现有用户添加到现有帐户。我只是想找一个可以和我谈谈的人。
在您的 User
模型中:
class User < ActiveRecord::Base
belongs_to :account
end
而在您的问题中,您正在写 has_one
。您不能在一个模型中写 has_many
,而在另一个模型中写 has_one
。一个模型需要belongs_to
。
编辑:
belongs_to
的模型,总是在其table中保存外键。所以 users
会在其中保存 account_id
。为了获得一个帐户的所有用户,您只需执行以下操作:
Account.first.users # As an account `has_many` users