Получение ошибки «неинициализированная константа» при использовании делегата в own_to в модели - PullRequest
2 голосов
/ 26 сентября 2010

Я реализую представление модели с тремя таблицами, одна из которых объединяет таблицу.Вот таблицы:

Рецепт:

class Recipe < ActiveRecord::Base
  # validates :name,  :presence => true
  # validates :directions, :presence => true

  # has_and_belongs_to_many :ingradients

  has_many :ingredients_recipes
  has_many :ingredients, :through => :ingredients_recipes

  accepts_nested_attributes_for :ingredients_recipes, :allow_destroy => true
end

Ингредиент:

class Ingredient < ActiveRecord::Base
  # has_and_belongs_to_many :recipes

  has_many :ingredients_recipes
  has_many :recipes, :through => :ingredients_recipes

end

И таблица соединения между ними:

class IngredientsRecipe < ActiveRecord::Base
  belongs_to :recipes
  belongs_to :ingredients, :foreign_key => "ingredient_id"

  delegate :name, :to => :ingredients

end

ThisКажется, работает нормально, когда я создаю новый рецепт - я могу редактировать строки рецепта, и все идет гладко.Когда я создал представление для отображения рецепта с именем ингредиента из таблицы ингредиентов, я создал делегата в таблице соединения.Однако, когда я пытаюсь использовать делегата в представлении:

  <% @recipe.ingredients_recipes.each do |r| %>
    <%= r.ingredient_id %> <br>  
    <%= r.name %>
  <% end %>

я получаю следующую ошибку:

uninitialized constant IngredientsRecipe::Ingredients

Когда я удаляю строку <% = r.name%>,работает без ошибок.Я неправильно определяю делегата или что может быть причиной этого?

1 Ответ

3 голосов
/ 27 сентября 2010

Я считаю, что ваши ассоциации принадлежат в IngredientsRecipes должны быть в единственном, а не во множественном числе, например:

class IngredientsRecipe < ActiveRecord::Base
  belongs_to :recipe
  belongs_to :ingredient, :foreign_key => "ingredient_id"

  delegate :name, :to => :ingredient

end

Также проверьте регистр имени вашего класса.Он должен быть либо единственным (IngredientRecipe), либо множественным (IngredientsRecipes) ... Я не уверен, какой, но я знаю, что это не должно смешиваться.

Наконец, почему вы используете соединениемодель?Если у вас нет других атрибутов в IngredientsRecipes, просто используйте HABTM, как закомментированные строки.

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