Ruby on rails 如何计算嵌套的属性布尔值?

Ruby on rails 如何计算嵌套的属性布尔值?,ruby-on-rails,ruby,boolean,nested-attributes,sidebar,Ruby On Rails,Ruby,Boolean,Nested Attributes,Sidebar,quantifieds的嵌套属性是结果。在结果部分,用户将检查他们的量化结果是否为:好的还是坏的 在侧边栏中,我想数一数用户标记了多少好结果,作为他们成功的参考点 侧栏部分:layouts/_count.html.erb 您可以按如下方式更新结果: class Result < ActiveRecord::Base # rest of the code scope :good, -> { where(good: true) } scope :good_coun

quantifieds的嵌套属性是结果。在结果部分,用户将检查他们的量化结果是否为:好的还是坏的

在侧边栏中,我想数一数用户标记了多少好结果,作为他们成功的参考点

侧栏部分:layouts/_count.html.erb 您可以按如下方式更新结果:

class Result < ActiveRecord::Base
  # rest of the code
  scope :good,       -> { where(good: true) }
  scope :good_count, -> { good.count }
end
class User < ActiveRecord::Base
  # rest of the code
  def good_results_count
    results.good_count
  end
end
如果您按以下方式更改了用户:

class Result < ActiveRecord::Base
  # rest of the code
  scope :good,       -> { where(good: true) }
  scope :good_count, -> { good.count }
end
class User < ActiveRecord::Base
  # rest of the code
  def good_results_count
    results.good_count
  end
end
若由于某种原因,该值保持为0(如您所述),请尝试执行我在控制台中描述的操作,以查看数据库中的真实数据。也许这不是获取正确数据的问题,也许数据保存不正确

让我知道事情的进展,这样我们就能解决真正的问题了

祝你好运

更新

问题在于用户和结果之间缺乏适当的关联。用户当前使用的内容:

嗯,一切看起来都很好,但问题实际上在@quantified=current_user.quantifieds.buildquantified_params行。创建的所有结果都有user_id=nil,只有量化的_id设置正确

如何解决这个问题

通过简化关联!不需要在结果中同时存储quantify_id和user_id

如果存在这样一种关系:User有许多Quantifies,quantifite有许多结果,那么通过在User:

这是很聪明的事情!让我们看看引擎盖下面发生了什么:

u = User.last
u.results
Result Load (0.3ms)  SELECT "results".* FROM "results" INNER JOIN "quantifieds" ON "results"."quantified_id" = "quantifieds"."id" WHERE "quantifieds"."user_id" = ?  ORDER BY date_value DESC  [["user_id", 5]]
=> #<ActiveRecord::Associations::CollectionProxy ...>
现在,当按上述方式建立关系时,正确的计数应该出现在网站中

结果中不需要存储用户id,所以您可以自由删除它


谢谢你富有洞察力的回答!如果你在附近,让我们聊聊。我现在就给你发个请求。我使用了你的代码,但它似乎不起作用,但这可能是我的错:@AnthonyGalli.com-不幸的是,我现在没有太多时间让小宝宝哭-但我们可以尝试~5分钟来赶上@AnthonyGalli.com-我很抱歉,但我今天必须结束。。。你在github的某个地方有代码吗?请添加我-,以便我可以尝试调查该问题。或者,如果你不喜欢我完全理解的访问权限!,是否可以添加控制器代码和整个模板,以查看处理部分quantifieds/_result_fields.html.erb表单?我认为这是数据持久化的问题,而不是读取!希望不久能赶上!这很可爱,但我也不必听他/她说。我在上面添加了代码。不用担心,Pawel。我对你的答案感到困惑的一部分是我不习惯使用rails c。我运行了你的第一行,但是我得到了一个错误:2.1.3:009>u=User.create{User\u attributes}语法错误:irb:9:syntax error,意外的'}',预期=>u=User.create{User\u attributes}你能添加你的db/schema.rb吗?检查为所有模型定义的属性会更容易。干杯我想,问题可能出在你的量化控制器量化参数上。您能否尝试修改它,使其具有以下内容参数。要求:量化。允许:类别,:度量,:私有\提交,:标记\列表,结果\属性:[:id,:结果\值,:日期\值,:良好,:\销毁]?在那之后,你能试着通过网络浏览器添加一些量词并测试是否保存了正确的值吗?谢谢@PawełDawczak!我添加了模式。我添加了你的代码,这就把它清理干净了。谢谢更改对浏览器没有任何正面或负面影响。我恐怕无法通过复制和粘贴代码在本地重现此问题。。。你介意分享整个项目吗,这样我就可以在我的机器上设置它了?这将是一次很好的体验,因为应用的更改将作为请求发送;。这是我的经历,我最近经历了一场从github到bitbucket的磨难:哦,也许我们先聊一会儿,然后再走这条路@PawełDawczak?
class QuantifiedsController < ApplicationController
  def create
    @quantified = current_user.quantifieds.build(quantified_params)
    if @quantified.save
      redirect_to quantifieds_url, notice: 'Quantified was successfully created'
    else
      @feed_items = []
      render 'pages/home'
    end
  end
end
class User < ActiveRecord::Base
  # rest of the code
  has_many :quantifieds, dependent: :destroy
  has_many :results, through: :quantifieds
  # rest of the code
end
u = User.last
u.results
Result Load (0.3ms)  SELECT "results".* FROM "results" INNER JOIN "quantifieds" ON "results"."quantified_id" = "quantifieds"."id" WHERE "quantifieds"."user_id" = ?  ORDER BY date_value DESC  [["user_id", 5]]
=> #<ActiveRecord::Associations::CollectionProxy ...>