0
我试图保存我的模型,但未能保存它。Rails has_many通过保存失败
#starship.rb
class Starship < ApplicationRecord
has_many :crew_members,inverse_of: :starship
accepts_nested_attributes_for :crew_members
has_many :holodeck_programs,inverse_of: :starship
accepts_nested_attributes_for :holodeck_programs
end
#crew_member.rb
class CrewMember < ApplicationRecord
belongs_to :starship
accepts_nested_attributes_for :starship
has_many :holodeck_programs,through: :starship
end
#holodeck_program.rb
class HolodeckProgram < ApplicationRecord
belongs_to :starship
belongs_to :crew_member
end
#controller
def create
#Starship,CrewMember and HolodeckProgram are new via CrewMember.new
@crew_member = CrewMember.new(crew_member_params)
@crew_member.save
.
.
end
.
.
private
def crew_member_params
params.require(:crew_member).permit(:name,:division,:starship_id,
starship_attributes: [:name,:id,
holodeck_programs_attributes: [:title,:starship_id,:crew_member_id]])
end
因为在holodeck_programs_attributes没有crew_member_id,验证错误发生。
我如何处理它在crew_member.rb通过crew_member因为:
我不能使用inverse_of:?
我不明白你的回答'''@starship = Starship.new(star_ship_params) @ crew_member.save'''与@starship和@crew_member –
没有关系其实这是我犯的一个错误。我现在纠正了它。 –
谢谢,但你的答案是为了节省星舰,我想同时保存船员和星舰和HolodeckProgram。但是,如何在保存前获取crew_member_id? –