Ruby on rails 如何正确设置我的模型关系
我有三种模式:黑客、投票、用户 用户可以创建许多黑客。 每个用户应该能够对每一次黑客行为投票一次(评级为1-5。如果点击错误或其他情况,评级应该是可更新的) 我考虑了以下关系: Hack.rb User.rbRuby 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
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