У меня проблема с Rails, не вводящим значения в postgresql.Сама база данных подключена.Когда я запускаю db: create: all (фрагмент из database.yml)
development:
adapter: postgresql
encoding: unicode
database: website_development
username: postgres
password: *******
host: 127.0.0.1
port: 9435
(test: то же самое, но с базой данных: website_test вместо website_development) все базы данных создаются для тестирования и разработки.Когда я запускаю мой db: миграция, также создается пользовательская таблица, например, фрагмент из файла миграции "date" _create_user.rb
class CreateUsers < ActiveRecord::Migration
def self.up
create_table :users do |t|
t.string :username
t.string :email
t.timestamps
end
end
def self.down
drop_table :users
end
end
(я проверил в pgAdmin и нашел таблицы, которые были созданы) Но когда япопробуйте вставить данные из консоли, например (это было выполнено в песочнице)
irb(main):001:0> User.create!(:username => "John", :email => "john@example.com)
=> #<User id: 1, username: nil, email: nil, created_at: "2011-04-26 22:00:28", u
pdated_at: "2011-04-26 22:00:28">
вот sql, созданный при другом создании!Я запустил
[1m[35mSQL (2.0ms)[0m INSERT INTO "users" ("username", "email", "created_at", "updated_at") VALUES (NULL, NULL, '2011-04-26 20:53:43.363908', '2011-04-26 20:53:43.363908') RETURNING "id"
Любая помощь в том, почему rails хорошо создает базы данных и таблицы, но не может найти правильное имя пользователя и адрес электронной почты для входа в sql.
PS Я запускаю Rspec для своих тестов и провел несколько тестов, касающихся значений имени пользователя и адреса электронной почты, отличных от нуля, которым все успешно.
......................
Finished in 1.62 seconds
22 examples, 0 failures
Notification failed: 201 - The destination server was not reachable
Notification failed: 201 - The destination server was not reachable
Как вы можете видеть все тесты Rspecзеленые, но у него возникли проблемы с подключением к серверу postgres
Заранее благодарим вас за любые советы.
Обновление: добавлен фрагмент пользовательской модели
class User < ActiveRecord::Base
attr_accessor :username, :email
email_regex = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
username_regex = /\A[\w\d]+\z/i
validates :username, :presence => true,
:format => { :with => username_regex },
:length => { :maximum => 30},
:uniqueness => { :case_sensitive => false }
validates :email, :presence => true,
:format => { :with => email_regex },
:uniqueness => { :case_sensitive => false }
end
== Ответ ==
Это были мои ошибки:
Часть 1. При изменении attr_accessor
на attr_accessible
все мои тесты работали должным образом, и все, что нужно, прошлок красному это также позволило мне добавить :email
детали, но не :username
детали, что приводит к части 2.
Часть 2. По какой-то причине рельсам не понравился тот факт, что моя таблица была названа :user
и моя колонка была названа :username
.Поэтому я попытался изменить: имя пользователя на :loginname
, что полностью устранило проблему.
Спасибо всем за помощь.