저는 레일을 처음 사용하고 있으며 내 앱에 has_many through:
관계가 있습니다. 나는 User, Message
과 Message_Recipients
모델을 가지고있다. (사용자는 많은 메시지를 가지고 있고, 메시지는 하나의 송신자를 가지고 있고, 메시지는 많은 수신자를 가지고있다. - message_recipients는 조인 테이블이다.)다중 테이블 레일스 쿼리
사용자 메시지에 포함 된 메시지보기에 메시지 보낸 사람의 이름을 표시하려고합니다. 그러나 내가 어떤 방법으로 이것을 시도 하든지 오류가 발생합니다. "Rails Way"를 고수하고 있는지 확신 할 수 없습니다.
사용자 필드는 다음과 같습니다 id, forename, surname, email
메시지 필드는 다음과 같습니다 id, sender_id, subject, body
SENDER_ID는 FK 사용자입니다
Message_Recipient 필드는 다음과 같습니다 id, user_id, message_id
사용자/MESSAGE_ID 여기
내 모델입니다 FKS (이다 나는 또한 Devise를 사용하고있다.) :
class Message < ActiveRecord::Base
belongs_to :user, :class_name => User, :foreign_key => "sender_id"#sender
has_many :message_recipients
has_many :users, through: :message_recipients
end
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :message_recipients
has_many :messages, through: :message_recipients
end
class MessageRecipient < ActiveRecord::Base
belongs_to :message, :class_name => Message, :foreign_key => "message_id"
belongs_to :user, :class_name => User, :foreign_key => "user_id"
end
이 내 메시지/index.html.erb입니다 :
<% @messages.each do |message| %>
<div class="message">
<h2><%= message.subject %></h2>
<p>Sent by <%= message.user.forename %></p>
</div>
<% end %>
그것은 내가 기반으로 사용자의 뒤따라야의 가치를 얻을 수없는 것 같이 내가 문제가있어보기에 NoMethodError를 얻기 때문에 메시지를 보낸 사람의 sender_id.
모든 도움말/권장 사항에 대한 조언을 많이 보내 주시면 감사하겠습니다.
당신의 대답을 주셔서 감사합니다. btw! – Chloe
예, postgresql을 사용하고 계신지, user_ids 배열에 저장하는 방법을 찾으십시오. –
sqlite3을 사용하고 있습니다. , 당신이 생각하는 것과 같을까요? 대단히 감사합니다. – Chloe