我有四个模型,正在使用SQL Server 2017。
工厂机器人:4.11.1
Rails:5.0.7
电子邮件过滤器将具有子过滤器,该子过滤器将用于发送电子邮件广告系列。然后EmailFilterRecord将存储该广告系列的电子邮件地址。
class EmailFilter < ApplicationRecord
self.table_name = :Email_Filter
self.primary_key = :Id
has_many :email_filter_details, foreign_key: 'Email_Filter_Id', dependent: :destroy
has_many :email_campaigns, foreign_key: 'email_filter_id'
accepts_nested_attributes_for :email_filter_details, allow_destroy: true
end
class EmailFilterDetail < ApplicationRecord
self.table_name = :Email_Filter_Details
belongs_to :email_filter, primary_key: 'Id'
end
class EmailCampaign < ApplicationRecord
self.table_name = :Email_Campaign
belongs_to :email_filter, primary_key: 'Id'
has_many :email_filter_records, foreign_key: 'email_campaign_id', dependent: :destroy
accepts_nested_attributes_for :email_filter_records, allow_destroy: true
end
class EmailFilterRecord < ApplicationRecord
self.table_name = :Email_FilterRecords
belongs_to :email_campaign
end
工厂:
FactoryBot.define do
factory :email_filter do
Name { 'First Filter' }
Description { 'First Filter Description' }
factory :all_active_mobile_services do
after(:create) do |email_filter|
create(:email_filter_detail, email_filter: email_filter)
end
end
end
end
FactoryBot.define do
factory :email_filter_detail do
Filter_Type { 'ServiceType' }
Filter_Value { 'MB' }
end
end
如果我这样做
create(:all_active_mobile_services)
我收到此错误:
ActiveModel::MissingAttributeError:
can't write unknown attribute `email_filter_id`
我在这里想念的是什么?
确定,得到解决方案。我已经在belongs_to :email_filter, foreign_key: 'Email_Filter_Id'
模型中添加了email_filter_detail
,现在可以使用了。