Rails: неинициализированная константа Model::RenamedAssociation при использовании класса для указания модели во взаимосвязи
У меня есть 3 таблицы, Сборы, Транзакции и Charges_Transactions.
Мне пришлось переименовать ассоциации на моих моделях, так как существует существующий метод транзакций, который мешал ассоциации. Смотрите эту статью
class Charge < ActiveRecord::Base
has_and_belongs_to_many :payment_transactions, join_table: "charges_transactions", foreign_key: "charge_id",
association_foreign_key: "transaction_id", class: 'Transaction'
end
class Transaction < ActiveRecord::Base
has_and_belongs_to_many :charges, join_table: "charges_transactions", foreign_key: "transaction_id",
association_foreign_key: "charge_id"
end
@charge.payment_transactions
Теперь, когда я пытаюсь получить доступ к связанным транзакциям за любую плату, я получаю сообщение об ошибке:
uninitialized constant Charge::PaymentTransaction
1 ответ
Попробуйте изменить: class: 'Transaction'
Для того, чтобы:class_name: 'Transaction'
С http://guides.rubyonrails.org/association_basics.html
Если имя другой модели не может быть получено из имени ассоциации, вы можете использовать опцию:class_name, чтобы указать имя модели. Например, если заказ принадлежит клиенту, но фактическим именем модели, содержащей клиентов, является Patron, вы должны настроить это следующим образом:
Класс Order