私はRails 4.2.4を使用しています。私はテーブル "my_objects"列 "address_id"は、私の "アドレス"テーブルに戻って外来キーです。だから私のmy_object.rbモデルでは、私は、参考のためRailsでは、フォームの送信時にStringからオブジェクトへの変換を強制するにはどうすればよいですか?
同時に、データベース内のSTATE_ID列のDN COUNTRY_ID列を持つ私のアドレスオブジェクトを(belongs_to :address, :autosave => true, dependent: :destroy
def save_with_address
transaction do
if !self.address.nil?
address = Address.new(self.address)
address.my_object = self
address.save
self.address = address
end
# Save the object
save
end
end
を対象とアドレスを保存するためのメソッドを作成する必要がありました)は、そう...
class Address < ActiveRecord::Base
belongs_to :state
belongs_to :country
has_one :my_object
end
しかし、私は以下のデータ
Parameters: {"utf8"=>"✓", "my_object"=>{"id"=>"", "name"=>"Dave20", "day"=>"07/06/2016", "distance"=>"10", "distance_unit_id"=>"5", "hour"=>"00", "minute"=>"04", "second"=>"05", "address"=>{"city"=>"baltimore", "state"=>"3555"}, "my_object_times_attributes"=>{"0"=>{"overall_rank"=>"", "age_group_rank"=>"", "gender_rank"=>"", "time_in_ms"=>"245000"}}}, "commit"=>"Save"}
で、この行を私のフォームを提出し、「アドレス= Address.new(self.addressが)」で失敗しているように構成されていますthエラー: "ActiveRecord :: AssociationTypeMismatch(状態(#70161141072220)、文字列があります(#70161059455060)):"。明らかにRailsは私の状態ID文字列をオブジェクトに変換していません。どうすればそれをすることができますか?
パラメータ名を変更して自動的に変換が行われるようにする方法はありますか?それが不可能な場合は、「新しいオブジェクトを作成することによってコードを変更する」というコメントに関する例を挙げることができますか? – Dave
あなたのフォームに 'state'と' country'フィールドをドロップダウンし、あなたの 'address'モデルの' state_id'と 'country_id'として値を渡す必要があります。 – hgsongra