在我的Rails應用程序中,我擁有客戶端和用戶。用戶可以擁有多個客戶端。在Rails中創建具有關聯的對象
的模型設置爲這樣:
class Client < ApplicationRecord
has_many :client_users, dependent: :destroy
has_many :users, through: :client_users
end
class User < ApplicationRecord
has_many :client_users, dependent: :destroy
has_many :clients, through: :client_users
end
class ClientUser < ApplicationRecord
belongs_to :user
belongs_to :client
end
所以,如果我想創造一個新的客戶端,有我會怎麼做與之相關聯的前兩個用戶?
例如
Client.create!(name: 'Client1', client_users: [User.first, User.second])
嘗試,讓我的錯誤:
ActiveRecord::AssociationTypeMismatch: ClientUser(#70142396623360) expected, got #<User id: 1,...
我也想爲一個RSpec測試做到這一點。例如
user1 = create(:user)
user2 = create(:user)
client1 = create(:client, client_users: [user1, user2])
如何在Rails控制檯和RSpec測試中爲關聯用戶創建客戶端?
嘗試這個 'User.create(名稱: 'oneuser') User.create(名稱: 'twouser') @client = Client.create(名稱: '客戶端1') @ client.users << User.first @ client.users << User.second' –
@VaibhavDhoke所以客戶端必須先存在?我無法同時創建和關聯? – Cameron
這是做到這一點的一種方式,也許這也可以完成,但我不知道它。仍然。請參閱此鏈接(http://guides.rubyonrails.org/association_basics.html#the-has-many-through-association)以獲取更多信息。 –