Ruby on rails 如何正确设置我的模型关系

Ruby on rails 如何正确设置我的模型关系,ruby-on-rails,relation,Ruby On Rails,Relation,我有三种模式:黑客、投票、用户 用户可以创建许多黑客。 每个用户应该能够对每一次黑客行为投票一次(评级为1-5。如果点击错误或其他情况,评级应该是可更新的) 我考虑了以下关系: Hack.rb User.rb has_many :hacks 投票数.rb belongs_to :user belongs_to :hack 这是正确的还是我遗漏了什么? 我考虑过以后要得到所有这样的选票: Hack.first.votes 我必须设置哪种外键? 在我的schema.rb中,我已经成功地设置了u

我有三种模式:黑客、投票、用户

用户可以创建许多黑客。 每个用户应该能够对每一次黑客行为投票一次(评级为1-5。如果点击错误或其他情况,评级应该是可更新的)

我考虑了以下关系: Hack.rb

User.rb

has_many :hacks
投票数.rb

belongs_to :user
belongs_to :hack
这是正确的还是我遗漏了什么? 我考虑过以后要得到所有这样的选票:

Hack.first.votes
我必须设置哪种外键? 在我的schema.rb中,我已经成功地设置了usershack关系,没有任何外键

ActiveRecord::Schema.define(version: 20141019161631) do

  create_table "hacks", force: true do |t|
    t.string   "url"
    t.string   "name"
    t.text     "description"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  create_table "users", force: true do |t|
    t.string   "email",            null: false
    t.string   "crypted_password", null: false
    t.string   "salt",             null: false
    t.datetime "created_at"
    t.datetime "updated_at"
    t.integer  "role"
  end

end

提前非常感谢

我想这就是你想要的

class User.rb
  has_many :votes
  has_many :hacks, through: :votes
end

class Vote.rb
  belongs_to :user
  belongs_to :hack
end

class Hack.rb
  has_many :votes
end
这样一来,黑客就可以通过用户获得很多投票权

外键: 投票表:用户id、黑客id

你应该能做黑客投票

编辑:

我编辑了模型,以反映一个正常的有很多通过关系


用户->投票非常感谢。这些关系听起来确实合理。您知道Rails是否需要我手动设置这些外来列,或者Rails是否属于/拥有许多选项为我这样做吗?我发现了一个错误。根据您的回答,一个黑客有多个用户,但一个黑客只能分配给一个用户。然而,一个用户可以创建许多黑客。这意味着用户有很多:黑客。用户有很多:投票Hack所属:用户Hack有很多:投票通过::users
class User.rb
  has_many :votes
  has_many :hacks, through: :votes
end

class Vote.rb
  belongs_to :user
  belongs_to :hack
end

class Hack.rb
  has_many :votes
end
t.references user
t.references hack