【问题标题】:Rails API - Voting app, associationsRails API - 投票应用程序、关联
【发布时间】:2017-06-05 21:00:47
【问题描述】:

所以,我正在开发一个小型投票应用。我正在使用 Rails,但作为 JSON API-only。 我想为每次投票创建选民表 - 以便每次投票都有相同的选民(这是本地社区的应用程序,其中选民将大部分保持“静态”),但如果每个人都有一个“出席名单”会很好表决。

我创建了控制器 - scoresvoters。现在:

您将如何做到始终包含相同的选民名单,但使用布尔值?我已经添加了 voter_presence: boolean,以及在路由中添加了类似的东西:

Rails.application.routes.draw do
  resources :scores do
    resources :voters
  end
end

它应该通过关联来解决问题 - 但我仍然有一个“每个分数都相同的列表”问题。

【问题讨论】:

  • voting有型号吗?
  • 不,我只在scores 中添加了标记的长度(标记是投票)
  • 所以当一个新的问题被投票时,一个新的分数被添加到表中?
  • 是的 - 根页面正在“创建投票” - 然后我们可以开始投票(完全“存在”)或编辑存在,保存并返回到我们可以开始投票的根。最初的“投票”分数为空。
  • 在我看来,您需要一个HABTM 在分数和选民之间的表格。这样每个分数将只有在场的选民。然后,您将添加一个像 excluded_voter_ids 这样的抽象属性和像 add_voters 这样的创建后回调到分数模型 add_voters,将遍历选民并将它们添加到 HABTM 关联中,除非它们在 @987654328 中@

标签: ruby-on-rails associations rails-api


【解决方案1】:
class Score < ActiveRecord::Base
  has_and_belongs_to_many :voters
  attr_accessor :excluded_voter_ids
  after_create :add_voters

  ... other code ...

  def add_voters
    Voter.where().not(id: excluded_voter_ids).find_each do |voter|
      self.voters << voter
    end
  end
end

您还需要按照说明 here 设置 HABTM 关联

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-23
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 2018-11-06
    • 2014-01-27
    • 2023-03-18
    • 2012-10-29
    相关资源
    最近更新 更多