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