这是2个型号。 button = Gtk.Button.new_with_mnemonic("_Open")
获取Order
的嵌套属性。
order_items
如何验证class order
has_many order_items
accept_nested_attributes_for :order_items
end
class order_item
belongs_to :order
validates :order_id, :presence => true #this line cause spec failure.
end
模型中order_id
的存在?使用nested_attributes,order_item
中order_id
的存在已经强制执行。但是,如果单独保存order_item
(而不是order_item
),我们仍需要验证order
。
答案 0 :(得分:3)
如果我做对了,你就无法通过设置保存相关记录:
params = {number: 'order-123', order_items_attributes:{product_id:1, quantity: 2, price: 3}}
Order.create params # => this should not work
要修复它,您需要使用inverse_of
选项明确告诉Rails关于关联:
class Order
# without inverse_of option validation on OrderItem
# is run before this association is created
has_many :order_items, inverse_of: :order
accepts_nested_attributes_for :order_items
end
在您的情况下不是必需的,但您也可以在inverse_of
中添加OrderItem
:
class OrderItem
belongs_to :order, inverse_of: :order_items
# ... the rest
end
有关将inverse_of
选项与关联一起使用的详情,请参阅here。
答案 1 :(得分:2)
此:
validates :order_id, :presence => true
只会确保提交order_id
的某些值。你想要这个:
validates :order, :presence => true
这将确保提交order
的{{1}}存在。