Вызванный .save на объекте ruby ​​передает только ноль для всех строк - PullRequest
1 голос
/ 12 марта 2012

У меня возникли проблемы с некоторыми проблемами начального уровня в Ruby, в частности с простым сохранением объекта в базе данных. Вот код

def add_user     
  firstName = params[:name];     
  email = params[:email];     
  user = User.new(:name=>'test', :email=>email)    
  puts "user name" + user.name     
  if user.save       
    puts "User saved"    
  end     
end

К сожалению, это то, что генерируется после save:

SQL (0.4ms)  INSERT INTO "users" ("created_at", "email", "name", "updated_at")
             VALUES (?, ?, ?, ?)  [["created_at", Mon, 12 Mar 2012 17:24:52 UTC +00:00], ["email", nil], ["name", nil], ["updated_at", Mon, 12 Mar 2012 17:24:52 UTC +00:00]]

Все передается как nil, несмотря на то, что я на самом деле жестко кодирую 'test' в поле имени. Также puts "user.name" + user.name выводит правильное имя. Модели данных совпадают для объекта User.

Schema Information
Table name: users

  id         :integer         # not null, primary key
  name       :string(255)
  email      :string(255)
  created_at :datetime
  updated_at :datetime

Так что я не совсем уверен, что происходит. Я пытался увидеть, если я должен использовать переменные экземпляра или нет, и я, кажется, продолжаю получать тот же результат. Это также похоже на выполнение всех шагов, которые я прочитал в любых книгах или учебных пособиях. Я что-то не так делаю?

1 Ответ

4 голосов
/ 12 марта 2012

Вы используете attr_accessor в своей модели, когда вы, вероятно, намеревались использовать attr_accessible. Это второй вопрос с этой ошибкой, и мне интересно, откуда люди получают attr_accessor. Вы следуете учебнику?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...