Я хочу узнать, как правильно настроить и использовать отношения в ActiveRecord.Собственные отношения ActiveRecord для сообщений
У меня есть модели:
class Message < ActiveRecord::Base
has_and_belongs_to_many :users, :association_foreign_key => :from_user_id
end
class User < ActiveRecord::Base
has_many :messages, :foreign_key => :to_user_id
end
таблица выглядит следующим образом:
|----------------------------------------------------------------|
| id | from_user_id | to_user_id | content | created_at | status |
|----------------------------------------------------------------|
| 1 | 1 | 2 | Hi, 2! | <...> | red |
| 2 | 2 | 1 | Hey, 1 | <...> | red |
| 3 | 1 | 2 | Whats up| <...> | sent |
| ... |
|----------------------------------------------------------------|
Как я хочу использовать его:
Контроллер:
class MessageController < ApplicationController
def list
@inbox = Message.where(:to_user_id => current_user.id).order(:created_at => :desc).group(:from_user_id)
@outbox = Message.where(:from_user_id => current_user.id).order(:created_at => :desc).group(:to_user_id)
end
end
Просмотр использования (ПОТЕРЯЕТ, ЧТО МОЖЕТ БЫТЬ МОЙ DELS НЕ ПОДКЛЮЧЕНЫ)
<% @inbox.each do |i| %>
<p><a href="/messages/<%=i.id%>"><%= User.find(i.from_user_id).email %></a><%= i.created_at %> <%= i.status %></p>
<% end %>
Я хочу получить информацию о пользователе от i. Возможно ли это? :) Давайте скажем что-то вроде i.user.email
Также было бы здорово получить к нему доступ от объекта пользователя. Например. current_user.messages.inbox (current_user из драгоценных камней 'изобрести')
Проверить мое решение ниже, чтобы увидеть, если это поможет вам, @Vygandas – franksort
Круто, я проверю позже сегодня, @franksort – Vygandas