代码之家  ›  专栏  ›  技术社区  ›  nfm

Rails属于并且单表继承不起作用

  •  1
  • nfm  · 技术社区  · 14 年前

    Bike 模型和a Component 模型。有几个模型继承自 组成部分 : Frame , Chain , Crankset 等。

    "bike" => { "frame" => { "id" => "4" }, "chain" => { "id" => "19" }, ... }
    

    @bike = Bike.new(params[:bike])
    > Frame(#90986230) expected, got HashWithIndifferentAccess(#81888970)
    

    如果我修改我的表单以生成以下参数,它就会工作:

    "bike" => { "frame_id" => "4", "chain_id" => "19" ... }
    

    以下是我的模型:

    class Bike < ActiveRecord::Base
      belongs_to :frame
      belongs_to :chain
      ...
    end
    
    class Component < ActiveRecord::Base
      has_many :bikes
    end
    
    class Frame < Component
    end
    

    Frame.first Component.all 毫无疑问。

    我疯了吗?嵌套参数不是通常的约定吗?这就是产生的原因:

    - f.fields_for @bike.frame do |frame|
      = frame.hidden_field :id
    

    我做错什么了??

    1 回复  |  直到 14 年前
        1
  •  2
  •   giraff    14 年前

    accepts_nested_attributes_for 标签(参见 railscast 196/197 ).

    belongs_to :frame
    accepts_nested_attributes_for :frame