2
我得到了以下關聯:Rails的相關模型沒有建立
class User < ActiveRecord::Base
has_and_belongs_to_many :subscribers, :join_table => 'subscribers_users'
end
class Subscriber < ActiveRecord::Base
has_and_belongs_to_many :devices, :join_table => 'subscribers_devices'
end
class Device < ActiveRecord::Base
has_and_belongs_to_many :subscribers, :join_table => 'subscribers_devices'
has_many :device_attributes
end
class DeviceAttribute < ActiveRecord::Base
belongs_to :device
end
在用戶類,我創建方法是這樣的:
def self.create(params)
transaction do
# create user
user = User.new
user.assign_attributes params
# associate a device
device = Device.build_from_params(params.dup)
raise_if_invalid device
subscriber.devices.push device
# associate device_attributes to device
params[:buttons].each do |b|
# >>> problem here >>>
device.device_attributes.build({:button_id => b[:button_id]})
end
user.save
end
end
上創建device_attributes線出現的問題設備的物體。當這條線被評論時,我的用戶被正確地創建以及它的相關對象(訂閱者和設備)。但是當我不評論它時,我的用戶只有一個用戶,就是這樣。它似乎停止了,並且不會與devce_attributes對象一起創建任何設備!
在控制檯中沒有錯誤..我真的很奇怪,怎麼了?
謝謝!
但是這應該是自動的(當父母被保存時,孩子對象被保存)根據這裏:http://api.rubyonrails.org/classes/ActiveRecord/AutosaveAssociation.html,不是嗎? – TGI
如果您的User.save調用發生在您的循環中,這可能會有效。由於它沒有被調用,所以每個Device對象都會超出範圍,並在你的循環中每次傳遞都會死掉。 – BrMcMullin