Я застрял в этой проблеме уже пару дней, я нашел несколько других вопросов о стеке, которые мы похожи, но решения там не помогли. Я пытаюсь создать две отдельные полиморфные ассоциации между двумя таблицами. У меня есть таблица пользователей, бизнес-таблица и таблица сообщений. Я не хочу, чтобы пользователь мог общаться друг с другом по одному разговору.Ruby on Rails две отдельные полиморфные ассоциации между двумя таблицами
Это моя схема сообщения:
class CreateMessages < ActiveRecord::Migration
def change
create_table :messages do |t|
t.references :receiver, polymorphic: true, index: true
t.text :message
t.boolean :status, default: false
t.references :sender, polymorphic: true, index: true
t.timestamps
end
end
end
Сообщения Модель
class Message < ActiveRecord::Base
belongs_to :sender, polymorphic: true
belongs_to :receiver, polymorphic: true
scope :unread, lambda {|| where("status = false")}
end
Пользователи Модель
has_many :messages, as: :sender
has_many :messages_out, as: :receiver, source: :messages
Бизнес-модель
has_many :messages, as: :sender
has_many :messages_out, as: :receiver, source: :messages
Rails консоли
2.2.1 :060 > User.first.messages_out
User Load (1.3ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 1
NameError: uninitialized constant User::MessagesOut
При попытке получить доступ к сообщениям в качестве отправителя она работает совершенно нормально, и я получаю ожидаемый выход. Я попытался изменить имя первого отношения на что-то другое, но тогда оба отношения потерпят неудачу.
User.first.messages
Я попробовал несколько вариантов этого и ни один из них не похоже, работает, если настройка моей базы данных или модели, как это просто нецелесообразно, и эта установка не может работать, пожалуйста, дайте мне знать, и любой другой настройка была бы оценена.
Да, я пытался что-то подобное раньше, и он все еще дал мне ошибку. NameError: uninitialized constant User :: MessagesOut –
После добавления вышеуказанной строки как для пользователя, так и для бизнеса? Не уверен, что еще может вызвать его. – tpbowden
Ух ты, похоже, теперь это сработало, я закрыл терминал и снова открыл его, и он начал работать с решением, которое ты мне дал. Действительно странно, я бежал перезагрузиться !. Я приму свой ответ, как только это позволит. Благодаря! Похоже, мне даже не нужен тег источника. –