这是我的第一个问题,所以如果有什么不清楚的地方请随时提问,我会马上回答:
我正在Rails 4项目上工作-我希望能够从一个用户向另一个用户发送自定义消息。
我有3个模型应该适用于这个问题:User, Track(关于音乐轨道的元信息),TrackMessage.
模型TrackMessage有4个字段:id, track_id, sender_id, recipient_id。
我希望能够使用track_id和sender_id来创建一个包含track_id引用的跟踪对象和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 %>
在User控制器中我有:
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
我非常喜欢社区在这方面的帮助。非常感谢您的宝贵时间! 我会这样设置。
在控制器
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 %>