Выберите одну строку из таблицы отношений в Rails

Есть ли более простой способ вернуть строку отношений из таблицы для доступа к хранящимся там данным?

У меня есть две модели, связанные с использованием has_many :through, а третья модель настроена как промежуточная. Мои модели состоят из User, Recipe и RecipeInfo.

Прямо сейчас, чтобы получить доступ к данным, хранящимся для информации рецепта конкретного пользователя, я использую запрос Rails, подобный этому

info = @user.recipeInfos.where("recipe_id=#{@recipe.id}")

Мне интересно, есть ли более простой способ доступа к этой единственной строке информации о пользовательском рецепте, а не использование метода .where().

Редактировать:

recipe = Recipe.find(params[:id])

user = current_user

current_user определяется sessions[:user_id] = current_user при входе пользователя в систему.


person Christian Benincasa    schedule 10.06.2012    source источник
comment
Просто для небольшого контекста кода, как вы определяете, какой рецепт искать (как определяется @recipe)?   -  person cdesrosiers    schedule 10.06.2012
comment
Я отредактировал свой вопрос с учетом контекста.   -  person Christian Benincasa    schedule 10.06.2012
comment
Почему вы не хотите использовать where? @user.recipeInfos.where(:recipe_id => @recipe.id).first автоматически ограничит его одним результатом, если это то, о чем вы беспокоитесь. Не связано, почему необычная заглавная буква recipeInfos?   -  person x1a4    schedule 10.06.2012


Ответы (1)


Вы можете сократить эти четыре строки кода до

info = current_user.recipeInfos.find_by_id(params[:id])

.

person cdesrosiers    schedule 10.06.2012
comment
Потрясающий. Это именно то, что я искал. Спасибо. - person Christian Benincasa; 10.06.2012