Почему Ruby on Rails 'User.create! (: Email =>' ha ',: identifier =>' foo ') не работает? - PullRequest
4 голосов
/ 16 февраля 2011

(я использую 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

1 Ответ

2 голосов
/ 16 февраля 2011

Попробуйте добавить attr_accessible к User модели:

def User
  attr_accessible :identifier
end

Если вы не хотите добавлять attr_accessible для identifier (потому что, скажем, пользователю не должно быть разрешено устанавливать свой собственный идентификатор), вам необходимо сначала сохранить пользователя, а затем установить идентификатор отдельно:

User.create!(:email => "a@a.com")

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