Ответ 1
Это типичная ошибка опечатки:
@post = Post.joins(:customers).select("customers.*,posts.*").find params[:id]
# should be:
@post = Post.joins(:customer).select("customers.*,posts.*").find params[:id]
#^^ no plural
Потому что вы определили отношение, подобное этому (используя единственное):
# Post model
belongs_to :customer
Некоторые вещи, которые нужно знать:
- В методе
joins
/includes
всегда используйте то же имя, что и отношение - В предложениях
where
всегда используйте множественное имя отношения (фактически, имя таблицы, которое по умолчанию является именем модели во множественном числе, но также может быть установлено вручную).
Примеры:
# Consider these relations:
User has_many :posts
Post belongs_to :user
# Usage of joins/includes & where:
User.includes(:posts).where(posts: { name: 'BlogPost #1' })
#^ ^
Post.joins(:user).where(users: { name: 'Little Boby Table' })
#^^ ^
Похожие вопросы: