Ruby on rails 为什么';你有工作给我吗?

Ruby on rails 为什么';你有工作给我吗?,ruby-on-rails,Ruby On Rails,我的期望是,当我创建一个BrickItem时,它将引用一个能力。然而,当创建BrickItem时,id为null。为什么? 我的表格创建: create_table "brick_items", :force => true do |t| t.integer "abilities_id" 我的迁移能力: Ability.create :name => 'my choice' 我的控制器: def create @brick_item = BrickI

我的期望是,当我创建一个BrickItem时,它将引用一个能力。然而,当创建BrickItem时,id为null。为什么?

我的表格创建:

  create_table "brick_items", :force => true do |t|
  t.integer  "abilities_id"
我的迁移能力:

  Ability.create :name => 'my choice'
我的控制器:

def create
        @brick_item = BrickItem.new(params[:brick_item])
        @brick_item.build_ability(:id => 1)
我的模型:

  class BrickItem < ActiveRecord::Base
  has_one :ability
end
class-BrickItem
我不确定我是否完全理解了整个情况,但从您共享的代码来看,似乎有几个问题:

  • 您应该调用列ability\u id,因为只有一个
  • 如果砖块项目拥有该技能id,那么您应该使用“属于”和“不拥有”
  • 构建能力只会构建一个新的能力。你应该使用创造能力

  • 很抱歉,我不理解您的代码,如果您试图创建和您的能力应该是这样的(在您的能力控制器上)


    但是我不确定你想做什么。

    字段应该是
    choice\u id
    而不是
    choices\u id
    我已将字段名更改为实际值。既然这是英语中的细微差别,要不要再试一次?你的能力模型是否属于BrickItem???如果没有,请在您的能力模型中添加belown_to:BrickItem jorge,我的目标是拥有一个包含3行的表:能力。A、 当我创建一个新的BrickItem时,我希望它有一个对单个能力的引用。我不想每次创建一个新的BrickItem时都创建一个新的能力,我只想要3个能力。所以根本不要使用build_能力。将代码更改为“所属”,并将id设置为您选择的能力。更清楚的是:您可以编写
    @brick\u item.ability(:id=>1)
    而不是
    @brick\u item.ability\u id=1
    或@brick\u item.ability=某些能力
    。在您的BrickItem模型中,更改为
    属于:能力`如果这对所有BrickItem都是通用的,那么最好在模型中执行。否则,只需将其设置为要附加的能力。
    def create
        @brick_item =  @brick_item = BrickItem.new(params[:brick_item])
        @ability = @brick_item.build_brick_item(params[:ability])
    end