やあ、
ネストされたフォームのセットアップに少し問題があります...
モデル「タイムシフティング」
class TimeShifting < ActiveRecord::Base
has_many :article_position_time_shifting_assignments, :dependent => :destroy
has_many :article_positions, :through => :article_position_time_shifting_assignments
accepts_nested_attributes_for :article_position_time_shifting_assignments
end
ジョインモデル「ArticlePositionTimeShiftingAssignment」
class ArticlePositionTimeShiftingAssignment < ActiveRecord::Base
belongs_to :article_position
belongs_to :time_shifting
accepts_nested_attributes_for :article_position, :reject_if => proc { |obj| obj['baan_id'].blank? }
end
モデル「ArticlePosition」
class ArticlePosition < ActiveRecord::Base
has_many :article_position_time_shifting_assignments
has_many :time_shiftings, :through => :article_position_time_shifting_assignments
end
ここで重要な点は、結合モデル ArticlePositionTimeShiftingAssignment にいくつかの追加属性があることです...
create_table "article_position_time_shifting_assignments", :force => true do |t|
t.integer "article_position_id"
t.integer "time_shifting_id"
t.integer "created_by"
t.integer "updated_by"
t.datetime "created_at"
t.datetime "updated_at"
t.string "order_number"
t.date "confirmed_date"
t.string "purchase_positions_collection"
end
created_by と updated_by は、フォームから order_number と Confirmed_date に自動的に入力されます。
ええと...新しい ArticlePosition を作成するのにまったく問題はありません
<%= f.simple_fields_for :article_position_time_shifting_assignments do |builder| %>
その後
<%= f.simple_fields_for :article_position do |builder| %>
私の問題は、常に新しい article_position_time_shifting_assignment レコードを作成していることです。新しい ArticlePosition を作成していない場合でも。
#<ArticlePositionTimeShiftingAssignment id: 10, article_position_id: nil, time_shifting_id: 10, created_by: 1, updated_by: 1, created_at: "2012-05-23 14:57:27", updated_at: "2012-05-23 14:57:27", order_number: "", confirmed_date: nil, purchase_positions_collection: "">
うーん...私はそれをしたくありません:P
accepts_nested_attributes_for :article_position_time_shifting_assignments, :reject_if => proc { |obj| obj['article_position_id'].blank? }
対応する article_position が保存されるまで article_position_id がないため、これは機能しません:-/
この問題を解決するためのアイデアはありますか?
乾杯、
マイケル