【发布时间】:2017-07-24 18:33:57
【问题描述】:
我在正确设置我的工厂时遇到问题,通过验证将 has_many/has_many 或 has_and_belongs_to_many 关联。客户端模型/工厂已被省略,但它确实存在。通过与验证关联来设置 has_many 到 has_many 的最佳方法是什么,需要传入属性?
我尝试了几种方法使其无法成功运行。当前的相关代码如下(略有改动)。尝试了其他方法:在 client_team 上使用 after(:create) 和 before(:create) 创建 user_clients,在定义关联的 client_teams 和 user_clients 上使用特征,使用 build_list/create_list 代替 shovel 运算符。
ClientTeam 模型:
belongs_to :client
has_many :client_team_rosters
has_many :users, through: :client_team_rosters
用户模型:
belongs_to :client
has_many :client_team_rosters
has_many :client_teams, through: :client_team_rosters
validates_presence_of :client_teams
ClientTeamRoster 模型:
belongs_to :user
belongs_to :client_team
相关工厂:
factory :client_team do
client
team_name "stuff"
end
factory :client_team_roster do
client
user
end
factory :user do
...
factory :user_client do
client
before(:create) do |user_client|
client_team = user_client.client.client_teams.first
user_client.client_team_rosters << FactoryGirl.build(:client_team_roster, user: user_client, client_team: client_team)
end
end
end
规格文件:
before(:each) do
@client = create(:client)
@client_team = create(:client_team, client: @client)
end
it "should do something" do
user_client = create(:user_client, client: @client)
end
当前错误:
Validation failed: Client_teams can't be blank
【问题讨论】:
标签: ruby-on-rails validation factory-bot rspec-rails