ruby-on-rails – Rails – 如何在某些事件上提供用户通知消息
我有铁路问题.我实际上解决了它,但我想这是一个更容易的方法.
我有用户/会员/组模型和用户/邀请/事件模型.成员加入用户和组.邀请加入用户和活动. 会员资格和邀请模式是平等的.组和事件确实有一些相同的不同列.成员资格/邀请模型都具有“已接受”的布尔列,这意味着被邀请到组/事件的用户必须在他是成员/参与者之前接受该邀请. 现在,如果用户登录所有组,则事件邀请应出现在列表中.事实上,我想稍后向系统添加更多通知,但事件甚至还没有包含在我的系统中. 我的解决方案是添加属于用户的通知模型.所以每个用户都有很多通知.此外,此模型是多态的,属于成员资格和邀请. #user model class User < ActiveRecord::Base has_many :memberships,:dependent => :destroy has_many :groups,:through => :memberships has_many :invitations,:dependent => :destroy has_many :events,:through => invitations has_many :notifications #membership model (equal to invitation model) class Membership < ActiveRecord::Base belongs_to :user belongs_to :group has_one :notifications,:as => :noticeable #group model (equal to event model but participants for members and invitation for membership) class Group < ActiveRecord::Base has_many :memberships has_many :users,:through => :memberships has_many :members,:through => :memberships,:source => :user,:conditions => ['memberships.accepted = ?',true] #notification model class Notification < ActiveRecord::Base belongs_to :user belongs_to :noticeable,:polymorphic => true 我已经向数据库添加了一些数据,我在控制台中测试它 myUser = User.find(6) # will be exchanged with current_user in the actual program 我将通过每个操作完成所有通知…但是一开始我在一个通知上测试所有进一步的操作 myNotice = myUser.notifications.first 因此,myNotices的noticeable_type是会员资格还是邀请函,我会将其作为群组或事件通知呈现 myGroup = Group.find(Membership.find(myNotice.noticeable_id).group_id) – >您想加入群组“myGroup.name”吗?是的|没有 是是:Membership.find(myNotice.noticeable_id).accepted = true 在No:Membership.find(myNotice.noticeable_id).destroy 并且:myNotice.destroy 这就是我的想法. 通过所有通知的“每个do”将在视图文件中.这意味着“Group.find(Membership.find(myNotice.noticeable_id).group_id)”必须在视图文件中或部分中.这有点难看吗? 我想我已经使用了很多“查找”,这意味着许多SQL查询.是不是有办法用任何“Ruby on Rails”来减少它们 – 可怕? 谢谢 :) 解决方法
需要类似我的应用程序,所以更新答案在这里,以防有人发现它有用.
#user model has_many :membership_notices,:through => :notifications,:source => :membership,:conditions => {"notifications.noticeable_type" => "membership"} has_many :event_notices,:source => :event,:conditions => {"notifications.noticeable_type" => "event"} 通知现在可以访问 user.membership_notices user.event_notices (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- C#(.NET)面试题:做一个能自定义输入命令的表格程序
- c# – 两个或多个线程可以在同一个列表中迭代,没有任何问题
- 读取properties文件,以及properties文件转成xml文件
- c#MemoryMappedFile in .net 3.5
- c – 如何使用指向常量对象的指针调用成员函数指针?
- Reactor与Proactor的概念
- c# – 如何通过单个WinForm对话框获取文件夹或文件路径?
- 【cocos2d-x-3.1.1系列4】cocos2d-x3.1.1.渲染过程源码简略
- 81.You are managing an Oracle Database 11g database wit
- Ajax接收Java服务端发送的text数据(用户名检查)