我正在使用rails 3.2.13和ruby 1.9.3。 我有三种型号: - 电子邮件 用户
我有两个用户角色=>出版商或订阅者
如果我想为订阅者和发布商提供电子邮件,我想知道如何在rails中执行此操作。 比如,我只是写 Email.find(####)。出版商 Email.find(####)。订户
没有为子和酒吧提供不同的表格。 此外,我在电子邮件和用户之间有很多关系。
另外,我想实现email.publishers.approved的默认范围?用户应该可以看到其他人应该被隐藏。
答案 0 :(得分:1)
这样做的方法是在EmailUser模型中使用字段“角色”。
然后在电子邮件模型中添加以下两种方法:
def publishers
self.users.where(:email_users=>{:role=>'Publishers'})
end
def subscribers
self.users.where(:email_users=>{:role=>'Subscribers'})
end
答案 1 :(得分:1)
你可以这样做。
class Email < ActiveRecord::Base
has_many :email_users
has_many :users, :through => :email_users
scope :approved, where(approved: true )
scope :publishers, joins(:email_users => :user).where(:users => {:role => "publisher"})
scope :subscribers, joins(:email_users => :user).where(:users => {:role => "subscriber"})
end
class EmailUser < ActiveRecord::Base
belongs_to :email
belongs_to :user
end
class User < ActiveRecord::Base
has_many :email_users
has_many :emails, :through => :email_users
scope :publisher, where(:role => "publisher" )
scope :subscriber, where(:role => "subscriber" )
end
然后,你可以简单地从这样的发布商那里获得批准的电子邮件。
Email.publishers.approved
并收到订阅者的电子邮件。
Email.subscribers
并从发布商那里收到电子邮件。
Email.publishers