New model object through an association
14,771
It is, but your syntax is a little wrong:
class Order < ActiveRecord::Base
belongs_to :basket
end
class Basket < ActiveRecord::Base
has_one :order
end
order = Order.new()
basket = order.create_basket()
Use build_basket
if you don't want to save the basket immediately; if the relationship is has_many :baskets
instead, use order.baskets.create()
and order.baskets.build()
Author by
pingu
Updated on July 02, 2022Comments
-
pingu almost 2 years
I thought it was possible to create a new model object through an association.
class Order < ActiveRecord::Base belongs_to :basket end class Basket < ActiveRecord::Base has_one :order end order = Order.new() basket = order.basket.new() # NoMethodError: undefined method `new' for nil:NilClass
-
pingu over 13 yearsThanks Chris for your reply, out of interest i tried basket = order.basket.new() when the relationship is has_many :baskets, and it worked fine. Its all very confusing.
-
gertas over 13 yearsIt may work, but I'm not sure if order.basket collection will contain your newly created object, which means you can save
order
and have all child objects autosaved and referenced toorder
(without specifying it in parameters).