Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 4代理用户配置文件_Ruby On Rails_Model_Ruby On Rails 4.2 - Fatal编程技术网

Ruby on rails Rails 4代理用户配置文件

Ruby on rails Rails 4代理用户配置文件,ruby-on-rails,model,ruby-on-rails-4.2,Ruby On Rails,Model,Ruby On Rails 4.2,我有三个模型:合作伙伴和用户,带有标准数据(:firstname、:lastname、:email等),还有一个事件模型 使用 用户可以创建一个事件,然后将合作伙伴添加到事件中,通过EventsPartnerjoin表的帮助,合作伙伴的顺序保存在另一个名为“Rank”的行中 需要 我希望用户请求合作伙伴配置文件的所有权,然后将显示用户配置文件而不是合作伙伴配置文件,并且必须遵守初始出现顺序 当用户获得合作伙伴的所有权时,partners.delegate接收true(或者,delegate可以是

我有三个模型:
合作伙伴
用户
,带有标准数据(:firstname、:lastname、:email等),还有一个
事件
模型

使用

用户可以创建一个事件,然后将合作伙伴添加到事件中,通过
EventsPartner
join表的帮助,合作伙伴的顺序保存在另一个名为“Rank”的行中

需要

我希望用户请求合作伙伴配置文件的所有权,然后将显示用户配置文件而不是合作伙伴配置文件,并且必须遵守初始出现顺序

当用户获得合作伙伴的所有权时,partners.delegate接收true(或者,delegate可以是用户的id)

可以使用电子邮件地址进行过滤(合作伙伴和所有者拥有相同的电子邮件)

总结

  • 用户1创建一个事件
  • 用户1通过电子邮件将合作伙伴A、B、C添加到活动中a@gm.com, b@gm.com, c@gm.com
  • 用户2发送电子邮件a@gm.com通过电子邮件@gm.com询问合作伙伴A的所有权
  • 用户1事件将显示用户2信息,而不是合作伙伴A,保持EventsPatner的出现顺序
因此,在我的
事件中#显示我目前的行动:

def show # with delegate is boolean, true
event_partners = @event.partners.all
# order is stored in EventsPartner (:event_id, :partner_id, :rank)
event_partners_only = @event.partners.where(delegate: false)
event_users_only = @event.partners.where(delegate: true)
users_email = event_users_only.pluck(:email)
event_users_only = User.where(email: users_email)
# how can I display the Users and Partners in the right order
end

def show # with delegate takes owner id
event_partners = @event.partners.all
# order is stored in EventsPartner (:event_id, :partner_id, :rank)
event_partners_only = @event.partners.where(delegate: nil)
event_users_only = @event.partners.where.not(delegate: nil)
users_id = event_users_only.pluck(:id)
event_users_only = User.where(id: users_id)
# how can I display the Users and Partners in the right order
end
因此,对于我参加的活动:

  • 合作伙伴(id、电子邮件、代表)
  • 用户(id、电子邮件)
  • EventsPatner(事件id、合作伙伴id、等级)
问题

当option delegate为1时,如何正确打印参加活动的合作伙伴列表,将合作伙伴信息替换为所有者的信息,并保持初始顺序

现在,我只是将event_合作伙伴的价值观替换为: 但我不喜欢这种黑客行为

event_partners.each do |ep|
  if ep.delegate?
    eu = event_users_only.find(email: ep.email)
    ep.firstname = eu.firstname
    ep.lastname = eu.lastname
    ep.occupation = eu.occupation
    ep.vignettea.url(:square) = eu.vignettea.url(:square)
  end
end 
谢谢你的帮助