我无法将create_association(attributes = {})方法用于Rails中的关联模型。
class Gwgiftwhip < ActiveRecord::Base
has_one :gift, :autosave => true, :dependent => :destroy
validates :gift, :presence => true
end
class Gift < ActiveRecord::Base
belongs_to :gwgiftwhip
end
belongs_to section in the Active Record Associations Guide建议您应该能够使用以下方法:create_association(attributes = {})来创建相关模型,并在使用belongs_to关联时保存它。但是,由于相关的模型参数“gift”未被设置,以下实现会导致保存错误。
class GiftsController < ApplicationController
...
def inbound
@gift = Gift.new(params.slice(*Gift.new.acceptable))
if @gift.create_gwgiftwhip({:user_id => @gift.user_id}, :without_protection => true)
...
end
end
以下作品,但似乎超出了预期用途。它正在创建一个相关模型,然后将自己设置为相关模型。这需要另一步然后保存。
class GiftsController < ApplicationController
...
def inbound
@gift = Gift.new(params.slice(*Gift.new.acceptable))
@gift.create_gwgiftwhip({:user_id => @gift.user_id}, :without_protection => true).gift = @gift
if @gift.gwgiftwhip.save
...
end
end
答案 0 :(得分:1)
尝试转身:
def inbound
@gift = Gift.new( params.slice( *Gift.new.acceptable ) )
if Gwgiftwhip.create( {user_id: @gift.user_id,
gift: @gift}, without_protection: true )
...
end
end
您可能还会考虑在Gwgif Whip上覆盖gift=
,以便自动设置gift
设置user_id
。例如:
class Gwgiftwhip
has_one :gift, :autosave => true, :dependent => :destroy
def gift=( gift )
super( gift )
self.user_id = gift.user_id
end
end