为什么没有为我工作?

时间:2012-12-12 18:31:03

标签: ruby-on-rails

我希望当我创建一个BrickItem时,它会引用一个Ability。然而,当创建BrickItem时,abilities_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

2 个答案:

答案 0 :(得分:0)

我不确定我是否完全了解整体情况,但从您分享的代码来看,似乎有几个问题:

  1. 您应该调用列ability_id,因为只有一个
  2. 如果brick item包含ability_id,那么你应该使用belongs_to而不是has_one
  3. build_ability只会构建一个新的能力。你应该使用create_ability。

答案 1 :(得分:0)

抱歉,我不理解您的代码,如果您正在尝试创建和能力,您应该看起来像这样(在您的能力控制器上)

def create
    @brick_item =  @brick_item = BrickItem.new(params[:brick_item])
    @ability = @brick_item.build_brick_item(params[:ability])
end

但我不确定你想做什么。