通过参数混淆查找或初始化Rails 4

Find or Initialize By Parameter Confusion Rails 4

我正在尝试在我的订单控制器中使用 'find_or_initialize_by'。我需要通过两个参数 user_id 和 item_id 来查找记录。如果该特定订单组合不存在,那么我想创建它。

这是我在订单控制器中的内容:

def create
    @order = Order.find_or_initialize_by(#not sure of syntax here)
      @order.update_attributes(quantity_requested)
        @order.save
          redirect_to :back
end 

我尝试了许多不同的参数,但都产生了错误消息。任何人都可以在这里澄清传递参数的正确方法吗?

感谢您提供的所有帮助。

编辑以添加更多代码:

数据库模式:

create_table "orders", force: true do |t|
    t.integer  "item_id"
    t.integer  "quantity_requested"
    t.boolean  "order_completed"
    t.datetime "created_at",         null: false
    t.datetime "updated_at",         null: false
    t.integer  "user_id" 

订购型号:

class Order < ActiveRecord::Base
    belongs_to :user 
    has_one :item, dependent: :destroy
    validates :user_id, presence: true
end

项目显示:

<%= form_for Order.new do |f| %>
   <%= f.number_field :quantity_requested, value: 0, max:  @item.quantity, min: 1, class: "item-quantity form-control", :onclick =>  '$(this.form).submit()'  %>
<% end %>

find_or_initialize_by 有两个参数。第一个是散列,第二个是一个块,如果什么都没有找到,而是被初始化。如果你不需要这个块,你可以这样做:

@order = Order.find_or_initialize_by(user_id: value, item_id: value)