Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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 如何通过协会为拥有者和成员建立模型?_Ruby On Rails_Ruby_Associations_Has Many Through - Fatal编程技术网

Ruby on rails 如何通过协会为拥有者和成员建立模型?

Ruby on rails 如何通过协会为拥有者和成员建立模型?,ruby-on-rails,ruby,associations,has-many-through,Ruby On Rails,Ruby,Associations,Has Many Through,在我的rails应用程序中,我有事件和用户模型。业务规则规定事件有一个所有者和多个成员,并且所有者必须是成员。相反,用户拥有许多“自有事件”和“事件”事件,他/她是其中的一员,但不是所有者。我原本计划这样模拟这个协会: 类事件

在我的rails应用程序中,我有事件和用户模型。业务规则规定事件有一个所有者和多个成员,并且所有者必须是成员。相反,用户拥有许多“自有事件”和“事件”事件,他/她是其中的一员,但不是所有者。我原本计划这样模拟这个协会:

类事件 有没有更好的方法对此进行建模?我可以在事件上添加一个临时“owner”属性,通过owner标志查询EventMember,但这对设置所有者有效吗?例如,我可以抓取创建的EventMember记录并确保设置了owner标志吗?

在连接模型EventMember上添加一个owner属性,同时在事件成员中添加一个布尔类型的字段怎么样表,默认值为false。使用每个模型上的方法访问owner和owned_事件

class Event < ActiveRecord::Base             
  has_many :event_members
  has_many :members, :through => :event_members, :source => :user

  def owner                                  
    event_members.ownerships.map(&:user).first                                                              
  end                                        
end                                          

class EventMember < ActiveRecord::Base       
  belongs_to :event                          
  belogns_to :user

  scope :ownerships, -> { where(:owner => true) }                          
end                                          

class User < ActiveRecord::Base              
  has_many :event_members                    
  has_many :events, :through => :event_members

  def owned_events                           
    event_members.ownerships.map(&:event)      
  end                                        
end
也许把逻辑放在那里,只强制一个所有者和make_所有者的抽象部分!根据应用程序中的混乱程度将其添加到EventMember。

如何在联接模型EventMember上添加所有者属性,以及在event_members表中添加一个布尔类型的字段,默认值为false。使用每个模型上的方法访问owner和owned_事件

class Event < ActiveRecord::Base             
  has_many :event_members
  has_many :members, :through => :event_members, :source => :user

  def owner                                  
    event_members.ownerships.map(&:user).first                                                              
  end                                        
end                                          

class EventMember < ActiveRecord::Base       
  belongs_to :event                          
  belogns_to :user

  scope :ownerships, -> { where(:owner => true) }                          
end                                          

class User < ActiveRecord::Base              
  has_many :event_members                    
  has_many :events, :through => :event_members

  def owned_events                           
    event_members.ownerships.map(&:event)      
  end                                        
end

也许把逻辑放在那里,只强制一个所有者和make_所有者的抽象部分!根据应用程序中的混乱程度,将其添加到EventMember。

看起来我将从事件模型手动强制执行所有权。我已经研究了这两种解决方案:和-后者使我非常接近我想要的,但我在访问:through属性时看到了奇怪的行为。我想你们的答案需要一个后创建钩子,以防事件并没有保存在make_owner中!看起来我要从事件模型手动强制所有权。我已经研究了这两种解决方案:和-后者使我非常接近我想要的,但我在访问:through属性时看到了奇怪的行为。我想你们的答案需要一个后创建钩子,以防事件并没有保存在make_owner中!