- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试设置一个类似于游戏的 Rails 应用程序。该应用程序有用户,每个用户都有他们可以创建的 Pawn。用户可以搜索其他用户和他们创建的 Pawn,如果愿意,可以使用自己的 Pawn 挑战另一个用户。然后,被挑战的用户可以接受/拒绝挑战。
现在我可以很好地为用户添加/删除 Pawns,我的模型如下所示:
class User < ActiveRecord::Base
has_many :pawns, dependent: :destroy
和
class Pawn < ActiveRecord::Base
belongs_to :user
现在,如果 User1 想要挑战 User2 创建的 Pawn,他会查看 User2 的 Pawn 列表并单击他想要的 Pawn 的“挑战”按钮。用户 1 然后必须选择他的一个 Pawn 用于挑战并单击保存。现在 User2 需要接受/拒绝挑战。
我很难思考应该如何设置挑战。我的想法是每个 Pawn 都会有一个 self 引用的多对多关系,几乎就像建立友谊关系一样。但是,我不知道是否应该考虑与用户或 Pawn 相关的挑战。
建模这样的东西的最佳方法是什么?
编辑:
这是我要完成的工作的图表。我绝对认为我需要某种关联设置。结果将保存该挑战的 Pawn 的统计信息(例如 time_spent、clicks_made 等)。 Challenge 也会有一列获胜者或类似的东西。
最佳答案
您的挑战可能为每种类型的 pawn 定义了关联。
class Challenge < ActiveRecord::Base
# attributes :challengee_id, :challenger_id
belongs_to :challengee, class_name: "Pawn"
belongs_to :challenger, class_name: "Pawn"
has_many :results
end
Pawn 将与每种类型的挑战相关联。
class Pawn < ActiveRecord::Base
# attributes :user_id
belongs_to :user
has_many :results
has_many :initiated_challenges, class_name: "Challenge", foreign_key: :challenger_id
has_many :received_challenges, class_name: "Challenge", foreign_key: :challengee_id
end
可能可以对结果记录的 challenge_id 进行非规范化。
class Result < ActiveRecord::Base
# attributes: pawn_id, challenge_id, :result
belongs_to :pawn
belongs_to :challenge
end
您的用户可以与 pawn 和通过 pawn 进行的挑战相关联。获得与用户关联的两种挑战类型的一种简单方法是将两种挑战关联(发起和接收)的结果组合到一个方法#challenge 中。
class User < ActiveRecord::Base
has_many :pawns
has_many :initiated_challenges, through: :pawns, source: :initiated_challenges
has_many :received_challenges, through: :pawns, source: :received_challenges
def challenges
initiated_challenges + received_challenges
end
end
此方法的性能优化可能包括将挑战中的 user_id 反规范化为 :challengee_user_id 和 :challenger_user_id... 或缓存用户的挑战 ID 列表,以便您进行一次查询而不是两次查询。
关于ruby-on-rails - 有人可以帮我这个协会吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12443304/
您好,我有一个用 cakephp 开发的网站。我有两张 table :成分属性 表之间的关系是 HasAndBelongsToMany(HABTM)。这是我的模型: class Ingredient
我从 sails.js 开始,我完全迷失了我的 sql 查询。 我有以下表格: genres +-----------+--------------+------+-----+ | Field
我正在开发一个 Rails 应用程序,用户可以在其中将他们希望执行的任务添加到他们自己的自定义列表中。每个任务也可以属于 0 个或多个类别。到目前为止,我已经试过了: 用户.rb has_one :u
我是新手。我正在尝试加入不同的集合以获取一些数据。我能够获取帖子创建者和喜欢的信息,但是如何使用 mongoose 中的关联获取包含他们的评论和评论者信息的帖子? 用户模式 const userSc
我试图让 mongoid 保存关联,但我只能让一侧工作。如果我有以下测试。 test "should add a user as a follower when a user follows th
我正在为 has_many 使用 FactoryGirl 示例来自 http://robots.thoughtbot.com/post/254496652/aint-no-calla-back-gir
我想为我的应用程序实现一个消息传递系统。 我有用户。 我应该怎么做? 创建一个带有外部两个用户外键的消息模型??.. 完成这项工作的最合适的方法是什么? 我担心的是,如果我查询“message.use
我正在尝试使用 FactoryGirl 创建一个测试数据库,该数据库的关联是 Parent has_many Entries。此时抛出Parent不能为空的ActiveRecord验证错误。我在这方面
我有以下关联 class Training 我也试过 FactoryGirl.define do factory :attendance do training associat
以下是我的制造商: Fabricator(:my_fabricator) do my_first_association my_second_association end 这里的问题是我需要
有关 Rails 关联的问题。 考虑以下模型: 人 事件 图片 人物和事件可以有很多图像。 上传到事件的图像需要具有与多人关联的能力。 这意味着人和图像之间存在两种关系。 一种将图像直接上传到人物身上
谁能告诉我 Android 应用程序开发与 Java 的关联有多密切。也就是说,从事 Android 开发的人员有可能从事 Core Java 或 J2EE 或 J2SE 的工作吗? 让我把我的问题说
从 Rails 4 和 Postgres 9 开始,引入了 array column。我还尝试使用数组列来存储诸如 tags 或 categories 之类的东西,我不经常更改它们,它用作搜索的引用/
我正在尝试从一对多关系创建一个序列化的 RESTful 响应。 我有一张表Lexicon,主键lexicon_id,我还有一张表lexicon_attributes,主键lexicon_attribu
协会的确切目的是什么?我了解关系的含义以及何时使用每种类型,例如: belongs_to, has_many, has_one , has_and_belongs_to_many, ect 但我不太明
最近我开始使用 Ruby on Rails 而不是 PHP 创建我的网站。 我已经很容易地掌握了这门语言,但仍然对联想没有 100% 的信心:) 我有这种情况: 用户模型 has_and_belong
我想用Sinatra和DataMapper做一个博客应用,我的主应用文件是这样的。 %w[rubygems sinatra data_mapper].each{ |r| require r } Dat
我有一个以前用于生产的 MySQL 数据库,现在我们的团队正在迁移到 SailsJS。我读过有关 sails 船协会的资料,我认为它很棒。但我想知道您是否可以使用关联来使用 .populate 方法填
我有一个模型 ShippingOption,它有_many ShippingSpeedOptions 还有一个要求: ShippingOption 必须有至少一个 ShippingSpeedOptio
好的,这是我的问题。我有 3 种不同的模型,人员、角色、客户和商店。客户有很多商店,也可以有很多人。商店有很多人。人有不同的角色。 1 人可以在多家门店工作,在每家门店可能担任不同的角色。 例如。 J
我是一名优秀的程序员,十分优秀!