ينتمي إلى عدم إنتاج Class_Name مخصص
-
27-09-2019 - |
سؤال
أقوم بتحديث طلب إلى Rails 3 وأواجه مشكلة في إنشاء مفتاح خارجي مخصص. لدي شيء مثل هذا:
class Product < ActiveRecord::Base
belongs_to :owner, :class_name => 'User'
...
end
class User < ActiveRecord::Base
has_many :products
...
end
class ProductsController < ApplicationController
before_filter :authenticate_user!
def index
@products = current_user.products
end
end
المنظر:
<%- @products.each do |p| -%>
<%= p.created_at %><br />
<%- end -%>
أحصل على هذا الخطأ في سجل القضبان الخاص بي:
Mysql::Error: Unknown column 'products.user_id' in 'where clause': SELECT `products`.* FROM `products` WHERE (`products`.user_id = 1)
يجب أن ترى belongs_to :owner
وابحث عن مفتاح خارجي يسمى owner_id
. حتى أنني حاولت وضع المفتاح الأجنبي بشكل صريح وهذا لا يعمل. لقد راجعت أيضًا Lighthouse للحصول على خطأ محتمل لـ Rails 3 ولكن لا حظ.
المحلول
تحتاج إلى تحديد المفتاح الخارجي على has_many :products
الارتباط ، لا يعرف تلقائيًا أنه يعكس belongs_to :owner
.
هذا يجب أن يعمل:
class User < ActiveRecord::Base
has_many :products, :foreign_key => 'owner_id'
...
end
من مستندات القضبان:
:مفتاح غريب
حدد المفتاح الأجنبي المستخدم للجمعية. بشكل افتراضي ، يُخمن أن يكون اسم هذه الفئة في الحالات السفلية و "_id". لذا فإن فصل الشخص الذي يجعل جمعية HAS_MANY ستستخدم "person_id" باعتباره الافتراضي: Foreign_key ..
لا تنتمي إلى StackOverflow