这是我的第一个问题所以请随时询问是否有问题,我会立即回复:
我正在开发一个Rails 4项目 - 我希望能够从一个用户向另一个用户发送自定义消息。
我有3个模型应该适用于这个问题:用户,跟踪(关于音乐曲目的元信息),TrackMessage。
模型TrackMessage有4个字段:id,track_id,sender_id,recipient_id。
我希望能够使用track_id和sender_id创建一个包含track_id引用的track对象的对象,以及sender_id引用的用户对象。
理想情况下,在show.html.erb中,我希望能够致电:
<% @myMessages.each do | m | %>
<p> <%= m.track.url %> </p>
<p> <%= m.track.name %> </p>
<p> <%= m.user.username %> </p>
<p> <%= m.track.url %> </p>
<% end %>
用户控制器中的我有:
def show
# fetch all of the messages that were sent to the current user
@trackMessages = TrackMessage.where(:recipient_id => current_user.id)
@myMessages = [ ]
*stuck on what happens next:
end
我非常希望社区对此有所帮助。非常感谢你的时间!
答案 0 :(得分:0)
我会这样设置它。
在您的控制器中
def show
@track_messages = TrackMessage.includes(:track, :sender).where(:recipient_id => current_user.id)
end
TrackMessage模型
Class TrackMessage
belongs_to :sender, class_name: 'User'
belongs_to :recipient, class_name: 'User'
belongs_to :track
delegate :name, to: :track, prefix: true
delegate :url, to: :track, prefix: true
delegate :username, to: :sender, prefix: true
end
然后在你看来你应该能够做到
<% @track_messages.each do | m | %>
<p> <%= m.track_url %> </p>
<p> <%= m.track_name %> </p>
<p> <%= m.sender_username %> </p>
<% end %>