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