Rails 4: 从其他控制器创建记录

Rails 4: Create record from other controller

我有 2 个模型,UserQueue。我希望能够从 users_controller.

中将 @user.id 添加到队列 table

我的模型是:

class Queue < ActiveRecord::Base
    has_many :users
end

class User < ActiveRecord::Base
    belongs_to :queue
end

我在 users_controller 中的函数是:

def addToQueue
    queue_entry = Queue.new(user_id: @user.id) # where things go wrong
    if queue_entry.save
        redirect_to user_path(@user), notice: "#{@user.name} has been successfully added to the queue."
    else
        redirect_to user_path(@user), :flash => {:error => "Error: #{@user.name} was NOT added to the queue."}
    end
end

我在 show.html.erb 视图中有一个 link 用于 user 的此函数: <%= link_to 'Add to queue', addToQueue_path(@user) %>

出于某种原因,我不断收到:wrong number of arguments (1 for 0) 指向行 queue_entry = Queue.new(user_id: @user.id)

我应该怎么做?

您设置关系的方式意味着用户 table 有外键 queue_id 而不是相反。

由于 User belongs_to 的实例是 Queue 实例,因此必须将 queue_id 分配为 User 实例的属性。