1

Stackoverflow での同様のセットアップ

やあ、

ネストされたフォームのセットアップに少し問題があります...

モデル「タイムシフティング」

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 がないため、これは機能しません:-/

この問題を解決するためのアイデアはありますか?

乾杯、

マイケル

4

1 に答える 1

0

実際にはMappingテーブル( ArticlePositionTimeShiftingAssignment )に新しいレコードを作成しますが、関連付けなので正しいですmany-to-many。したがって、この場合、いくつかの追加レコードをマッピング テーブルに割り当てるのは適切な方法ではありません。

于 2012-05-23T16:45:44.467 に答える