【发布时间】:2016-12-04 21:43:34
【问题描述】:
我是 Rails 新手,我的应用中有一些 has_many through: 关系。
我有User, Message 和Message_Recipients 模型(一个用户有很多消息,一个消息有一个发件人,一个消息有很多收件人 - message_recipients 是连接表)。
我试图在我的消息视图中显示消息发件人的姓名,该视图保存在用户模型中。但是,无论我尝试如何执行此操作,我都会遇到错误 - 我不确定我是否坚持“Rails 方式”。
用户字段为:id, forename, surname, email
消息字段是:id, sender_id, subject, bodysender_id 是一个用户 FK
Message_Recipient 字段是:id, user_id, message_iduser/message_id 是 FK
这是我的模型(我也在使用 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 获取用户名的值。
任何帮助/最佳实践建议将不胜感激!
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4 devise