ruby-on-rails - 为什么 Ruby on Rails 的 User.create!( :email => 'ha' , :identifier => 'foo' ) not work?

标签 ruby-on-rails ruby-on-rails-3 activerecord restful-authentication

(我使用的是 Rails 2.2.2,但应该与 2.3.5 或 3.0 非常相似)

以下行有效:

User.create!(:email => 'ha')

但我生成了一个迁移并添加了 identifier到用户表,并重新启动 Rails 控制台,并使用
User.create!(:email => 'bar', :identifier => 'foo')    

创建此用户时,电子邮件字段设置为 bar (如在 mysql 中看到的)但是 identifier未设置为 foo ……有什么理由吗?
db/schema.rb :
create_table "users", :force => true do |t|
  t.string   "login"
  t.string   "email"
  t.string   "crypted_password",                  :limit => 40
  t.string   "salt",                              :limit => 40
  t.datetime "created_at"
    [...]
  t.string   "short_bio"
  t.string   "identifier"
end

最佳答案

尝试添加 attr_accessibleUser模型:

def User
  attr_accessible :identifier
end

如果您不想添加 attr_accessibleidentifier (因为说,不应该允许用户设置自己的标识符),那么你需要先保存用户,然后单独设置标识符:
User.create!(:email => "a@a.com")

u = User.find_by_email("a@a.com")
u.identifier = "foo"
u.save!

关于ruby-on-rails - 为什么 Ruby on Rails 的 User.create!( :email => 'ha' , :identifier => 'foo' ) not work?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5011676/

相关文章:

ruby-on-rails - 对于 Rails View *.html.erb : where can I place the style sheet?

jquery - 结合 Ruby on Rails、jQuery、AJAX 和 Embedly API

ruby-on-rails - 如何迭代 ActiveRecord 属性,包括 attr_accessor 方法

ruby-on-rails - 在 rails (belongs_to) 中创建子模型并预先设置父 ID

ruby-on-rails - 运行parallel_test时如何合并CircleCI内的多个simplecov目录?

ruby-on-rails - 通过启用 cache_classes = true 手动重新加载已为 'cached' 的 Rails 类

ruby-on-rails - 如何在 Gemfile 中使用条件

ruby-on-rails - letrate gem 错误的参数数量错误

ruby - 在 rails_admin 中,如何关闭相关子表单中的 "add new"和 "edit"按钮?

ruby-on-rails - ActiveRecord 自动保存 :false doesn't appear to work