Проблемы с установкой ассоциации в Rails - PullRequest
1 голос
/ 17 февраля 2020

У меня есть модель Post и модель User. Пользователи могут любить посты, эта информация хранится в отдельной модели Любви, а не непосредственно в посте, потому что Пользователь должен иметь возможность просматривать записи понравившихся им постов.

У меня есть миграция, например это:

    create_table :loves do |t|
      t.references :post, null: false, foreign_key: true
      t.references :user, null: false, foreign_key: true
    end

User.rb

  has_many :loves

Post.rb

  has_many :loves

Love.rb

class Love < ApplicationRecord
  belongs_to :user
  has_one :dinner
end

Эта ассоциация делает кажется, не работает, всякий раз, когда я пытаюсь полюбить пост, я получаю эту ошибку:

uninitialized constant User::Lofe 

Я понимаю, что слово "Lofe" может показаться опечаткой Любви, о чем я и думал, но перебрал всю кодовую базу и нет экземпляра Lofe.

В консоли Rails, если я наберу User.first.love, я получу сообщение об ошибке, указывающее Did you mean? loves, что, кажется, указывает на то, что ассоциация существует (работает как с пользователями, так и с обедами), но если я тогда наберу User.first.loves, это будет бросить ту же ошибку неинициализированной константы.

1 Ответ

6 голосов
/ 17 февраля 2020

Я провел небольшое исследование, и проблема в механизме перегиба Rails. Как вы можете видеть здесь: https://twitter.com/andypike/status/578214888465657856 и здесь: https://rails.lighthouseapp.com/projects/8994/tickets/2407-inflector-singularising-loves-to-lofe-but-pluralizing-love-to-loves, очевидно, при использовании слова love вам необходимо настроить его вручную в config/initizers/inflections.rb

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...