gpt4 book ai didi

ruby-on-rails - FactoryGirl 定义 - 未定义的关联方法

转载 作者:行者123 更新时间:2023-12-04 14:03:15 25 4
gpt4 key购买 nike

我有以下

在/应用程序/模型中:

class Area < ActiveRecord::Base
has_many :locations
end
class Location < ActiveRecord::Base
belongs_to :area
end

在/app/test/factories/areas.rb
FactoryGirl.define do
factory :area do
name 'Greater Chicago Area'
short_name 'Chicago'
latitude 42
longitude -88
end
factory :losangeles, class: Area do
name 'Los_Angeles Area'
short_name 'Los Angeles'
latitude 50
longitude 90
end
end

在/app/test/factories/locations.rb
FactoryGirl.define do
factory :location do
name "Oak Lawn"
latitude 34
longitude 35
association :area
end
factory :malibu, class: Location do
name "Malibu"
latitude 60
longitude -40
association :losangeles
end
end

当我尝试运行它时,我得到:
NoMethodError: undefined method `losangeles=' for #<Location:0x00000102de1478>
test/unit/venue_test.rb:10:in `block in <class:VenueTest>'

任何帮助表示赞赏。

最佳答案

您收到此错误是因为您试图对您的 malibu 说工厂设置一个名为 losangeles 的关联,它不存在。存在的是工厂losangeles这会创建一个 Area .
你想要的是:

FactoryGirl.define do
factory :location do
name "Oak Lawn"
latitude 34
longitude 35
association :area
end
factory :malibu, class: Location do
name "Malibu"
latitude 60
longitude -40
association :area, factory: :losangeles
end
end

查看文档 here

请注意,您还可以使用嵌套来定义第二个工厂:
FactoryGirl.define do
factory :location do
name "Oak Lawn"
latitude 34
longitude 35
association :area

factory :malibu do
name "Malibu"
latitude 60
longitude -40
association :area, factory: :losangeles
end

end
end

关于ruby-on-rails - FactoryGirl 定义 - 未定义的关联方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13180112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com