Рельсы 3.1 .Вот мои модели
class Cookbook
has_many :recipes, :include => :ingredients
end
class Recipe
belongs_to :cookbook
has_many :ingredients
end
class Ingredient
belongs_to :recipe
end
И у меня есть эти данные
Cookbook (id: 1)
Recipe "Pizza" (id: 1)
Ingredient "Tomato" (id: 1)
Ingredient "Cheese" (id: 2)
Recipe "Spaghetti" (id: 2)
Ingredient "Tomato" (id: 1)
Ingredient "Pasta" (id: 3)
Теперь давайте загрузим данные как объекты ActiveRecord
# Eager load all recipes and ingredients
cookbook = Cookbook.includes(:recipes).find(1)
pizza = cookbook.recipes[0]
tomato_for_pizza = pizza.ingredients.first
spaghetti = cookbook.recipes[1]
tomato_for_spaghetti = spaghetti.ingredients.first
Однако я бы хотелустановить флаг для одного из объектов ActiveRecord, но не хочу, чтобы он влиял на другой объект ActiveRecord с тем же идентификатором.
tomato_for_pizza.in_stock = true
tomato_for_spaghetti.in_stock # true, but should be false (default)
Другими словами, я хочу объекты Ingredient
(хотяони оба имеют одинаковый идентификатор и представляют одинаковые данные в базе данных) для загрузки в виде отдельных объектов в памяти.На языке RSpec
tomato_for_pizza.object_id.should_not == tomato_for_spaghetti.object_id
Мой вопрос: возможно ли это?Или есть другой способ сделать это?