Впервые у меня была эта проблема, как неделю назад, и я думаю, что этот факт не очень хорошо объяснен, главным образом потому, что я не мог выделить проблему ... очевидно, теперь у меня есть ... но все еще не знаю ее природу
У меня есть миграция, которая выглядит следующим образом:
class CreateUsers < ActiveRecord::Migration
def self.up
create_table :users do |t|
t.references "faculty"
t.references "department"
t.references "role", :null => false
t.string "name", :null => false, :limit => 20
t.string "surname", :null => false, :limit => 20
t.string "username",:null => false, :limit => 25
t.string "study_group",:limit => 6
t.string "study_course",:limit => 50
t.string "card_code",:limit => 12
t.boolean "During_Day",:default => false
t.string "email", :limit => 100
t.string "hashed_password", :limit => 40
t.string "salt", :limit => 40
end
end
def self.down
drop_table :users
end
end
Если я начну создавать пользователей из консоли rails и сохранять их при попытке восстановить данные через
User.all
информация о некоторых полях будет повреждена. Я начал удалять поля, и это работает, когда я оставляю первые 8 столбцов (включая идентификатор, который создается по умолчанию). Создание девятого столбца или даже больше повредит все, а потом я Я получаю все виды не правильной информации по моему мнению.
Я должен сказать, что когда из консоли rails я что-то сохраняю, а затем проверяю это из командной строки mysql, тогда информация в порядке .... так чего же не хватает в ActiveRecord?
вывод для:
Не могли бы вы запустить show create table users\G
из консоли mysql?
mysql> show create table users\G
*************************** 1. row ***************************
Table: users
Create Table: CREATE TABLE `users` (
`id` int(11) NOT NULL auto_increment,
`faculty_id` int(11) default NULL,
`department_id` int(11) default NULL,
`role_id` int(11) NOT NULL,
`name` varchar(20) NOT NULL,
`surname` varchar(20) NOT NULL,
`username` varchar(25) NOT NULL,
`study_group` varchar(6) default NULL,
`study_course` varchar(50) default NULL,
`card_code` varchar(15) default NULL,
`day_time` tinyint(1) default '0',
`email` varchar(100) default NULL,
`hashed_password` varchar(40) default NULL,
`salt` varchar(40) default NULL,
PRIMARY KEY (`id`),
KEY `faculty` (`faculty_id`),
KEY `department` (`department_id`),
KEY `role` (`role_id`),
KEY `username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.02 sec)
mysql>
добавление пользователя из консоли rails
Loading development environment (Rails 3.0.3)
irb(main):001:0> me = User.new
=> #<User id: nil, faculty_id: nil, department_id: nil, role_id: nil,
name: "", surname: "", username: "", study_group: nil, study_cour
se: nil, card_code: nil, day_time: false, email: nil, hashed_password:
nil, salt: nil>
irb(main):002:0> me.name = 'Daniel'
=> "Daniel"
irb(main):003:0> me.surname = 'Garcia'
=> "Garcia"
irb(main):004:0> me.username = 'vinagrito'
=> "vinagrito"
irb(main):005:0> me.role_id = 1
=> 1
irb(main):006:0> me.save
=> false
irb(main):007:0> me.errors
=> {:password=>["is too short (minimum is 8 characters)"], :email=>["is
invalid", "can't be blank"]}
irb(main):008:0> me.password = '12345678'
=> "12345678"
irb(main):009:0> me.email = 'mail@mail.com'
=> "mail@mail.com"
irb(main):010:0> me.save
=> true
irb(main):011:0> me
=> #<User id: 2, faculty_id: nil, department_id: nil, role_id: 1, name:
"Daniel", surname: "Garcia", username: "vinagrito", study_group
: nil, study_course: nil, card_code: nil, day_time: false, email:
"mail@mail.com", hashed_password: "6305ee7016b263c0ec41a81439a378837a
318035", salt: "5c33e8fed10b87c9f4b7841f0faeb7b10424289a">
irb(main):013:0> user = User.where(:id => 2)
=> [#<User id: 2, faculty_id: nil, department_id: nil, role_id: 1, name:
"Daniel", surname: "Garcia", username: "vinagrito", study_grou
p: nil, study_course: nil, card_code: nil, day_time: false, email:
"mail@mail.com", hashed_password: 6305.0, salt: "5c33e8fed10b87c9f4b
7841f0faeb7b10424289a">]
Посмотрите "hashed_password", который он мне возвращает
Вывод файла development.log
[1m[36mSQL (1.0ms)[0m [1mSHOW TABLES[0m
[1m[35mSQL (2.0ms)[0m SHOW TABLES
[1m[36mSQL (1.0ms)[0m [1mSELECT `schema_migrations`.`version` FROM
`schema_migrations`[0m
[1m[35mSQL (31.0ms)[0m CREATE TABLE `users` (`id` int(11) DEFAULT
NULL auto_increment PRIMARY KEY, `faculty_id` int(11), `department_id`
int(11), `role_id` int(11) NOT NULL, `name` varchar(20) NOT NULL,
`surname` varchar(20) NOT NULL, `username` varchar(25) NOT NULL,
`study_group` varchar(6), `study_course` varchar(50), `card_code`
varchar(15), `day_time` tinyint(1) DEFAULT 0, `email` varchar(100),
`hashed_password` varchar(40), `salt` varchar(40)) ENGINE=InnoDB
[1m[36mSQL (68.0ms)[0m [1mCREATE INDEX faculty ON
users(faculty_id)[0m
[1m[35mSQL (65.0ms)[0m CREATE INDEX department ON
users(department_id)
[1m[36mSQL (78.0ms)[0m [1mCREATE INDEX role ON users(role_id)[0m
[1m[35mSQL (80.8ms)[0m CREATE INDEX username ON users(username)
[1m[36mSQL (30.0ms)[0m [1mINSERT INTO `schema_migrations` (`version`)
VALUES ('20101226144503')[0m
[1m[35mSQL (7.0ms)[0m SHOW TABLES
[1m[36mSQL (3.0ms)[0m [1mSELECT `schema_migrations`.`version` FROM
`schema_migrations`[0m
[1m[35mSQL (2.0ms)[0m SHOW TABLES
[1m[36mSQL (7.0ms)[0m [1mdescribe `authors`[0m
[1m[35mSQL (2.0ms)[0m SHOW KEYS FROM `authors`
[1m[36mSQL (7.0ms)[0m [1mdescribe `book_loans`[0m
[1m[35mSQL (3.0ms)[0m SHOW KEYS FROM `book_loans`
[1m[36mSQL (7.0ms)[0m [1mdescribe `books`[0m
[1m[35mSQL (2.0ms)[0m SHOW KEYS FROM `books`
[1m[36mSQL (7.0ms)[0m [1mdescribe `departments`[0m
[1m[35mSQL (3.0ms)[0m SHOW KEYS FROM `departments`
[1m[36mSQL (8.0ms)[0m [1mdescribe `faculties`[0m
[1m[35mSQL (3.0ms)[0m SHOW KEYS FROM `faculties`
[1m[36mSQL (7.0ms)[0m [1mdescribe `roles`[0m
[1m[35mSQL (2.0ms)[0m SHOW KEYS FROM `roles`
[1m[36mSQL (7.0ms)[0m [1mdescribe `subjects`[0m
[1m[35mSQL (2.0ms)[0m SHOW KEYS FROM `subjects`
[1m[36mSQL (7.0ms)[0m [1mdescribe `users`[0m
[1m[35mSQL (1.0ms)[0m SHOW KEYS FROM `users`
[1m[36mSQL (0.0ms)[0m [1mSHOW TABLES[0m
[1m[35mSQL (0.0ms)[0m BEGIN
[1m[36mSQL (0.0ms)[0m [1mdescribe `users`[0m
[1m[35mAREL (0.0ms)[0m INSERT INTO `users` (`faculty_id`,
`department_id`, `role_id`, `name`, `surname`, `username`,
`study_group`, `study_course`, `card_code`, `day_time`, `email`,
`hashed_password`, `salt`) VALUES (NULL, NULL, 1, 'Daniel', 'Garcia',
'viangrito', NULL, NULL, NULL, 0, 'mail@mail.com',
'e1382ac8675daee167a262ee7ef3bd038f997c4a',
'a3518e0a6b273590073bd733e2ee692fbca28c2d')
[1m[36mSQL (15.6ms)[0m [1mCOMMIT[0m