0
我有以下結構:如何將數據傳遞給連接表上創建
class User < ActiveRecord::Base
has_many :device_ownerships
has_many :devices, :through => :device_ownerships
end
class Device < ActiveRecord::Base
has_one :device_ownership
has_one :user, :through => :device_ownership
end
class DeviceOwnership < ActiveRecord::Base
belongs_to :user
belongs_to :device
end
然而DeviceOwnership也有SERIAL_NUMBER行
我想通過SERIAL_NUMBER值DeviceOwnership上創建。我知道我可以做類似
def create
user = User.create
device = Device.create
device_ownership = DeviceOwnership.create(:serial_numer => params[:device_serial_number], :device_id => device.id, :user_id => user.id)
end
這似乎不太優雅,我不知道是否有更好的解決方案。
爽,謝謝你。我不知道如果我通過創建只有一個值的create創建DeviceOwnership,Rails將自動爲其分配device.id。 – Stpn 2014-09-19 20:17:47
美麗之處在於,一切都將在MySQL交易中運行。這意味着如果某些驗證失敗,則不會保存任何內容,並且所有COMMIT都將恢復。 – Surya 2014-09-19 20:19:21