Rails 3:查询问题

时间:2012-07-29 07:20:46

标签: ruby-on-rails ruby-on-rails-3 activerecord

我正在学习Rails 3中的'where',我想知道为什么我的代码给了我一个NoMethod错误。

  def create
    #get form values from 'new' page
    @post = Post.new(params[:post])

    #search for the inventory item with the sku code the user typed in the form
    @item = Inventory.where(:sku_code => @post.sku_code)

    #set post variable to a variable from the row with the sku code
    @post.detail = @item.detail

    @post.save
  end

通过搜索SKU,我想检索相同ID中的其他变量并将它们设置为我的@post变量。有人能帮我一把吗?

1 个答案:

答案 0 :(得分:1)

假设SKU代码是唯一的,你必须这样做

@post = Post.new(params[:post])

@post.detail = Inventory.where(:sku_code => @post.sku_code).first.try(:detail)

first将从数据库中获取第一个(也可能是唯一的)记录。如果返回的try不是nil,则detail会尝试抓取Inventory

检查this blog post以了解有关try方法的更多信息。