0
私のモデルを保存しようとしましたが、保存できませんでした。Rails has_many from save fail
#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はありませんので、検証エラーが起こります。
私はinverse_of使用することはできません:私はそれを処理することができますどのようにcrew_member.rb
であるための貫通crew_member:?
'' '@starship = Starship.new(star_ship_params) crew_member.save''' @ @starshipと@crew_member –
とは関係実際に私によって作られた間違いのthatsはありません。私は今それを修正しました。 –
ありがとう、あなたの答えは宇宙船を保存することです、私はcrew_memberと宇宙船とHolodeckProgramを同時に保存したいです。ただし、保存する前にcrew_member_idを取得する方法はありますか? –