【问题标题】:"Can't mass-assign protected attributes" error, even they exists in attr_accessible“无法批量分配受保护的属性”错误,即使它们存在于 attr_accessible
【发布时间】:2013-05-22 09:20:09
【问题描述】:

我有一个从数据库迁移创建的表:

class CreateTickets < ActiveRecord::Migration
def up
create_table :tickets, :primary_key => :tickets_id do |t|
  t.string :title, null: false
  t.text :body
  t.datetime :create_date
  t.integer :author_id
  t.integer :status, null: false, default: 0
end
end

一个模型:

class Ticket < ActiveRecord::Base
attr_accessible :title, :body, :create_date, :author_id, :status
end

当我尝试创建记录时:

User.create(title: title,body: body,create_date: Time.zone.now, author_id: @author_id,status: 0)

我收到此错误:

无法批量分配受保护的属性:title、body、create_date、author_id、status

我做错了什么?

【问题讨论】:

    标签: ruby-on-rails attr accessible


    【解决方案1】:

    您正在尝试创建User,而不是创建Ticket

    将您的代码更改为:

    Ticket.create(title: title, body: body, create_date: Time.zone.now, author_id @author_id, status: 0)
    

    希望它会有所帮助。

    【讨论】:

      【解决方案2】:

      您正在尝试创建用户实例而不是票证。

      【讨论】:

        【解决方案3】:

        另外,如果您不喜欢在可访问列表中标记每个属性,您更愿意在 config/application.rb 中添加它

        config.active_record.whitelist_attributes = false

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多