Các định nghĩa sau đây được làm việc trong Rails 4.0.x và dưới:Rails 4.1.x HABTM Không xác định Phương pháp 'foreign_key'
module Gemgento
class Product < ActiveRecord::Base
has_and_belongs_to_many :stores, -> { distinct }, join_table: 'gemgento_stores_products', class_name: Gemgento::Store
end
end
Tuy nhiên, sau khi nâng cấp lên Rails 4.1.x, tôi bắt đầu nhận được lỗi sau bất cứ khi nào lớp Gemgento::Product
được khởi tạo.
NoMethodError: undefined method `foreign_key' for #<Class:0x007f870f18e668>
from /Users/Kevin/.rvm/gems/[email protected]/gems/activerecord-4.1.4/lib/active_record/dynamic_matchers.rb:26:in `method_missing'
from /Users/Kevin/.rvm/gems/[email protected]/gems/activerecord-4.1.4/lib/active_record/associations/builder/has_and_belongs_to_many.rb:113:in `belongs_to_options'
from /Users/Kevin/.rvm/gems/[email protected]/gems/activerecord-4.1.4/lib/active_record/associations/builder/has_and_belongs_to_many.rb:82:in `through_model'
from /Users/Kevin/.rvm/gems/[email protected]/gems/activerecord-4.1.4/lib/active_record/associations.rb:1580:in `has_and_belongs_to_many'
from /Users/Kevin/Sites/gemgento/app/models/gemgento/product.rb:21:in `<class:Product>'
Cảm ơn, điều này đã giúp tôi giải quyết rất nhiều rắc rối –
Ngoài ra, tôi muốn lưu ý rằng việc sử dụng cả hai loại: 'class: Gemgento :: Store' hoặc' class_name: Gemgento :: Store.name' để tiết kiệm cho mình khỏi các loại mistypes – faron