Ruby on rails 在Rails中设置用户和奖金之间的关联

Ruby on rails 在Rails中设置用户和奖金之间的关联,ruby-on-rails,ruby,activerecord,associations,Ruby On Rails,Ruby,Activerecord,Associations,与Stackoverflow上的工作方式类似,我正在设置一个应用程序,用户可以发布奖金,其他用户可以自愿完成 唯一的区别是用户选择谁执行赏金。例如,如果创建了一个赏金,并且有三个人自愿完成赏金,那么创建者可以选择1/3、2/3或3/3 创建赏金时,当用户选择进行中:进行中,完成时,赏金被视为打开 首先,如果一个用户是赏金的唯一所有者,但其他用户属于赏金,但作为志愿者,如果选择成为参与者,我将如何建立我的关联。这是否应该作为一种自我参照关联来进行?似乎建立两个新模型可能是多余的 class Use

与Stackoverflow上的工作方式类似,我正在设置一个应用程序,用户可以发布奖金,其他用户可以自愿完成

唯一的区别是用户选择谁执行赏金。例如,如果创建了一个赏金,并且有三个人自愿完成赏金,那么创建者可以选择1/3、2/3或3/3

创建赏金时,当用户选择进行中:进行中,完成时,赏金被视为打开

首先,如果一个用户是赏金的唯一所有者,但其他用户属于赏金,但作为志愿者,如果选择成为参与者,我将如何建立我的关联。这是否应该作为一种自我参照关联来进行?似乎建立两个新模型可能是多余的

class User < ActiveRecord::Base
  has_many :bounties
end

class Bounty < ActiveRecord::Base
  belongs_to :user
end
class用户
至于赏金的状态,我应该在赏金表中设置三个不同的基于布尔值的列吗


:open,:in_proges,:complete

我会这样做:这没有经过测试,因此您可能需要调整选项

User
  has_many :owned_bounties, :class_name => "Bounty", :as => :owner
  has_many :bounty_volunteers, :as => :volunteer
  has_many :volunteered_bounties, :through => :bounty_volunteers

Bounty 
  #owner_id, status(can be "open", "in_progress" or "complete")
  belongs_to :owner, :class_name => "User"
  has_many :bounty_volunteers
  has_many :volunteers, :through => :bounty_volunteers, :source => :volunteer
  has_many :participants, :through => :bounty_volunteers, :source => :volunteer, :conditions => ["bounty_volunteers.selected = ?", true]

#join table class
BountyVolunteer
  #bounty_id, volunteer_id, selected(bool)
  belongs_to :bounty
  belongs_to :volunteer, :class_name => "User"

因此,当您将用户添加为志愿者时,您正在创建赏金志愿者记录。如果他们升级为参与者,则您正在编辑现有的赏金志愿者记录。

您需要为要添加赏金的组件创建第三个模型,并且您可以使用第三个模型通过
关系创建
,对于用户模型中的第三个关联,什么是
自愿赏金
指的是什么?对于赏金模式,第二个协会,
有多少:赏金志愿者
代表什么?这两个
是否有许多通过
的协会没有考虑到这种所有权场景?
自愿提供的奖金
是奖金和自愿提供奖金的用户之间的联接表/模型。这是一个“丰富”的加入,它记录了他们是否也被选中。我明白了。现在把这些放在一起,我遇到了以下错误:
SQLite3::SQLException:没有这样的列:bounties.owner\u type:选择“bounties”。*从“bounties”中选择“bounties”。“owner\u id”=?和“赏金”。“owner\u type”=?
当我输入这样的内容时,会返回上面的错误:
user.owned\u赏金
看起来它认为
bounty.owner
关联是多态的,这很奇怪。尝试将
:foreign\u key=>:owner\u id
添加到
所属:owner
关联中。