В моей модели у меня есть
class Alias
include DataMapper::Resource
belongs_to :user
property :id, String, :key => true, :required => true, :unique => true
validates_format_of :id, :with => /[0-9a-z\-]/i
end
В моем контроллере:
def new
@new_alias = @owner.aliases.new()
end
def create
@owner = current_user
@alias = @owner.aliases.create(params[:alias])
end
И на мой взгляд
<%= form_for @new_alias, :url => {:controller => "aliases", :action=>"create"} do |f| %>
<%= f.text_field :id, :placeholder => "Account name" %></br>
<%= f.submit :value => "Create" %>
<% end %>
Для меня это выглядит preatty нормальным, но когда я пытаюсь сохранить новый псевдоним, это приводит к:
ERROR: null value in column "alias_id" violates not-null constraint
Обработка AliasesController # create как параметры HTML: {"utf8" =>"✓", "authenticity_token" => "/ token =", "alias" => {"id" => "IDNAME"}, "commit" => "Create"} ~ SQL (0.632ms) SELECT "id", "encrypted_password", "remember_created_at", "reset_password_token", "reset_password_sent_at", "failed_attempts", "unlock_token", "locked_at", "sign_in_count", "current_sign_in_at", "last_sign_in_at", "current_sign_in_ip", "last_sign_in_ip", "имя пользователя "," электронная почта "," имя "," страна "ОТ" пользователей "ГДЕ" id "ВНУТРИ (2) ПРЕДЕЛ 1 ~
SQL (0,491мс) ВЫБРАТЬ" id "ИЗ" псевдонимы "ГДЕ" id "=«IDNAME» ORDER BY «id» LIMIT 1 Завершено за 11мс ~ SQL (0,531мс) INSERT INTO «aliases» («id», «user_id») VALUES («IDNAME», 2) ~ ОШИБКА: нулевое значение в столбце «alias_id"нарушает не-нольограничение (код: 33575106, состояние sql: 23502, запрос: INSERT INTO "aliases" ("id", "user_id") VALUES ('IDNAME', 2), uri: postgres: name @ localhost: 5432postgres? adapter = postgres & host =localhost & port = 5432 & username = name & password = pass & database = postgres & path = postgres & schema_search_path = public & encoding = utf8 & template = template0)
DataObjects :: IntegrityError (ОШИБКА: нулевое значение в столбце «alias_id * ограничение» нарушает условие not-null *): ограничение not-null *controllers / aliases_controller.rb: 5: in `create '
В чем может быть проблема?Я использую rails3, postgres и datamapper.