RoR: создание объекта со строкой primary_key (связанная ошибка: не удалось найти Object_Id с ID = 0) - PullRequest
1 голос
/ 21 октября 2010

Я создал модель со строкой primary_key.

Действие Create в Ruby on Rails выдало мне следующую ошибку:

Couldn't find Theme with ID=0

Моя таблица тем не имеет столбца ID, ностроковый столбец с именем name, который является первичным ключом.

После поиска везде я экспериментировал с действием Create внутри theme_controller.

Первоначально это было:

def create
    @theme = Theme.new(params[:theme])

    respond_to do |format|
      if @theme.save
    ....

Параметр: name был правильно передан, но не использовался, его заменял идентификатор, которого нет в моей модели.

Решение должен был вставить следующую строку, чтобы заставить RoR взять имя в объекте.

def create
    @theme = Theme.new(params[:theme])
    <b>@theme.name = params[:theme][:name]</b>
    respond_to do |format|
      if @theme.save
    ....

1 Ответ

0 голосов
/ 17 января 2011

Вероятно, вам следует установить первичный ключ в модели темы. Нравится

set_primary_key :name

, а также отключить идентификаторы в миграции, как

create_table :themes, :id => false do |t|

Также см. http://roninonrails.blogspot.com/2008/06/using-non-standard-primary-keys-with.html для получения дополнительной информации о том же. Ваш подход не обязателен, так как Theme.new (params [: theme]) должен автоматически заполнять все атрибуты в модели, если params [: theme] имеет те же атрибуты, что и модель. Не уверен, почему так не работает.

...