【问题标题】:Database not completely updated in rails migration在 Rails 迁移中数据库未完全更新
【发布时间】:2013-11-04 09:32:25
【问题描述】:

我是 Ruby on Rails 的新手。我有一个名为 create user

的迁移
class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.column :username, :string,        :limit => 25, :default => "", :null => false
      t.column :hashed_password, :string, :limit => 40, :default => "", :null => false
      t.column :first_name, :string,      :limit => 25, :default => "", :null => false
      t.column :last_name, :string,       :limit => 40, :default => "", :null => false
      t.column :email, :string,           :limit => 50, :default => "", :null => false
      t.column :display_name, :string,    :limit => 25, :default => "", :null => false
      t.column :user_level, :integer,     :limit => 3,  :default => 0,  :null => false
    end

 User.create(:username=>'test',:hashed_password=>'test',:first_name=>'test',:last_name=>'test',:email=>'test@test.com',:display_name=> 'test',:user_level=>9)  
  end
end

当我运行rake db:migrate 时,表是使用上述列创建的,但测试数据不存在

mysql>select * from users;
Empty set (0.00 sec)

编辑我刚刚删除了整个数据库并重新开始迁移,现在它显示以下错误。

rake aborted!
An error has occurred, all later migrations canceled:

Can't mass-assign protected attributes: username, hashed_password, first_name, last_name, email, display_name, user_level

我做错了什么请帮忙? 谢谢。

【问题讨论】:

  • 当您将User.create 语句更改为User.create!(带有感叹号)时,是否会出现验证错误?
  • 编辑了问题你能帮帮我吗
  • 把这个放在 user.rb attr_accessible :username, :hashed_pa​​ssword, :first_name, :last_name, :email, :display_name, :user_level
  • 把它作为答案发布我很乐意接受它。

标签: ruby-on-rails ruby ruby-on-rails-3 migration rake


【解决方案1】:

添加

attr_accessible :username, :hashed_password, :first_name, :last_name, :email, :display_name, :user_level

给你的 user.rb

【讨论】:

    【解决方案2】:

    这是 Rails 禁止用户通过参数哈希创建或更新对象的方式。您需要在模型中将您的用户属性指定为attr_accessible

    示例:

    class User
     attr_accessible :username, :firstname (etc)
    end
    

    阅读有关批量分配的更多信息here

    【讨论】:

      【解决方案3】:

      只是为了完成有关测试环境的答案。您可以运行 rake db:test:prepare 来检查迁移和加载架构!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-12-25
        • 2018-10-10
        • 2012-04-03
        • 2021-07-06
        • 1970-01-01
        • 1970-01-01
        • 2011-04-21
        相关资源
        最近更新 更多