Similar Setup on StackoverflowRails 3 - reject_if has_many:通过关联不可能?
那里嗨,
我有我的嵌套形式设置有点问题......
模式 “时移”
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: "">
Mhhhh ......我不希望出现这种情况:P
accepts_nested_attributes_for :article_position_time_shifting_assignments, :reject_if => proc { |obj| obj['article_position_id'].blank? }
这是行不通的,因为没有article_position_id直到相应article_position已经保存: -/
任何想法来解决这个问题?
干杯,
迈克尔
Mhh。这是有道理的,你在说什么。我只是没有看到正确的选择......当用户创建time_shifting时,他应该能够添加/创建一些article_positions。那些article_positions可以稍后用于其他time_shiftings。每个创建/分配的article_positions都应该有一些额外的字段(order_number,delivery_date)。 Mhh ...我需要一个带有(time_shifting_id,article_pos_id,foobar_id)的表格。 Foobar_id将链接到其他属性。这不完全是一回事吗? – sufu90