Ruby on rails 一行Ruby代码,我没有';我不明白,是不是给了我一个质量分配错误

Ruby on rails 一行Ruby代码,我没有';我不明白,是不是给了我一个质量分配错误,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我目前正在阅读Rails3的实际版本。这本书创建了一个应用程序,可以在其中创建项目,并且可以为上的每个项目创建票证。它创建了3个模型: 项目: class Project < ActiveRecord::Base attr_accessible :name validates :name, presence: true has_many :tickets, :dependent => :destroy end 我遇到此错误无法批量

我目前正在阅读Rails3的实际版本。这本书创建了一个应用程序,可以在其中创建项目,并且可以为上的每个项目创建票证。它创建了3个模型:

项目:

    class Project < ActiveRecord::Base
      attr_accessible :name
      validates :name, presence: true
      has_many :tickets, :dependent => :destroy
    end
我遇到此错误
无法批量分配受保护的属性:user
。现在我真的不明白什么是合并!正在做什么以及原因:用户正在传入,或者为什么我会收到错误。我知道通常我必须将mass assignment属性包含到attr_accessible:方法中。但是这次属性是一个类,所以我不知道如何处理它

救命啊,,
mike

将此添加到您的票证模型中应该会起作用。您必须指定接受哪些嵌套属性才能在单个表单中使用

attr_accessible :description, :title, :user     
accepts_nested_attributes_for :questions

除非你有理由把它放在一条线上?在那种情况下也许

@ticket = @project.tickets.build(params[:ticket].merge!(:user_id => current_user.id))

Thanx粘贴,有效(2行解决方案)。但我还有一个问题。我有
归属于:project
归属于:user
。那么在项目内部,我有一个对应的
has\u many:tickets
但是在用户内部,没有对应的
has\u many:tickets
这是本书的疏忽吗?我知道这个版本有很多印刷错误。用户模型看起来像是Desive生成的默认模型,它不包含任何关联。不确定是否可以在生成器中指定任何关联,但我通常只是稍后将它们添加到用户模型中。
    @ticket = @project.tickets.build(params[:ticket].merge!(:user => current_user))
attr_accessible :description, :title, :user     
accepts_nested_attributes_for :questions
@ticket = @project.tickets.build(params[:ticket])
@ticket.user = current_user
@ticket = @project.tickets.build(params[:ticket].merge!(:user_id => current_user.id))