创建后,使用子记录中的信息更新Rails父记录

威尔·沃瑞尔

这是我的第一篇文章,所以我不确定如何设置格式。如果我做错了,请告诉我。

我是Rails的新手,我正在开发一款基本上允许用户向其他用户提交“ grimes”(您可以将其视为评论)的应用。该应用程序有两个基本模型:用户和垃圾。

用户模型:

class User < ApplicationRecord
    has_many :grimes
end

污垢模型:

class Grime < ApplicationRecord
  belongs_to :user
  validates :user, presence: true
end

每个污垢都有一个污点属性,基本上是污垢从1-5的等级。每个用户具有一个严酷度属性,我想将其作为每个用户关联的网格的严酷度的总和。即。如果user1有两个网格,g1的清晰度为3,g2的清晰度为2,则user1的清晰度应为5。

当我想显示用户的表情时,可以通过遍历用户的每个网格来做到这一点,但这似乎非常不必要。相反,每次添加与它们相关的新污垢时,我都只是想增加用户的清晰度,但是我现在不知道该怎么做。

创建污垢的形式如下所示:

<%= form_for @grime do |f| %>
    Title: <%= f.text_field :title %><br />
    Description: <%= f.text_area :description %><br />
    Griminess Level:  <%= f.select :griminess, (0..5) %>
    Select Grimer: <%= f.collection_select(:user_id, User.all, :id, :name) %><br />
    <%= f.submit %>
<% end %> 

我的grimes#create看起来像这样:

def create
      @grime = Grime.new(grime_params)
      
      if @grime.save
          flash[:success] = "Grime Saved Successfully"
          redirect_to @grime
      else
          flash[:error] = "Error: Could Not Save Grime!"
          render :new
      end
  end

我觉得我应该能够@grime.user.griminess += @grime.griminess在create方法中做类似的事情,但这似乎对我不起作用。谁能推荐一种更好的方法来解决这个问题?

kiddorails

添加after_save钩子,只要保存污垢Grime钩子便会在该污垢上调用方法

class Grime < ApplicationRecord
  after_save :update_user_griminess # register the callback
  belongs_to :user
  validates :user, presence: true

  #callback body
  def update_user_griminess
    user.griminess = user.grimes.sum(:griminess) # update user griminess as sum of it's all grimes' griminess 
    user.save
  end      
end

after_createActiveRecord中有一个备用钩子,该钩子在首次创建对象时仅运行一次,但是我更喜欢after_save在这里进行调整,以适应grime更新的严峻情况。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在单个事务中创建父记录后,如何创建子记录(第5条)?

来自分类Dev

在Sailsjs中创建父/子关联记录

来自分类Dev

我想从oracle中的子记录值更新父记录

来自分类Dev

.Net Core-在“创建子记录”保存后,从父记录中预填充子记录中的外(父)键会导致导航错误

来自分类Dev

在Rails中创建记录后如何延迟

来自分类Dev

创建记录后,是否可以在OrientDB中更新记录的类?

来自分类Dev

创建父记录后创建空的子记录(第4条)

来自分类Dev

创建子记录时,使用子recordName填充CloudKit中的父引用(列表)

来自分类Dev

使用SQLite中的子查询更新记录并添加记录

来自分类Dev

创建父记录后自动创建关联记录

来自分类Dev

使用Rails中的按钮更新记录?

来自分类Dev

在PostgreSQL中父级记录的级联删除后,是否有办法保留子记录

来自分类Dev

添加子记录后,未将父记录添加到数据库中

来自分类Dev

在Entity Framework中添加子记录时,如何避免创建父记录?

来自分类Dev

如何在rails中显示父记录及其子记录总数

来自分类Dev

无法创建或更新Rails 4中的belongs_to记录

来自分类Dev

从AngularJS在Rails中创建记录

来自分类Dev

将Props记录在子组件中会提供更新后的值,而在父级中定义的状态本身仍不会更新

来自分类Dev

访问Rails 4中的父记录

来自分类Dev

在一对多Rails ActiveRecord关系中,获得父记录只有子记录的最佳实践是什么?

来自分类Dev

Rails创建新记录而不是更新

来自分类Dev

Rails中的自我连接正在返回每个预期子行的父记录

来自分类Dev

在 Rails 中不使用哈希创建活动记录

来自分类Dev

使用 collection_select 在 rails 中创建多条记录

来自分类Dev

Rails-在子范围内的计算中使用父记录列值

来自分类Dev

使用ajax,Rails,Coffeescript,jQuery更新列表中的记录

来自分类Dev

使用ajax,Rails,Coffeescript,jQuery更新列表中的记录

来自分类Dev

保存记录后,灰烬更新父路线的模型

来自分类Dev

用于创建父/子记录关系的 DataHandler 结构

Related 相关文章

  1. 1

    在单个事务中创建父记录后,如何创建子记录(第5条)?

  2. 2

    在Sailsjs中创建父/子关联记录

  3. 3

    我想从oracle中的子记录值更新父记录

  4. 4

    .Net Core-在“创建子记录”保存后,从父记录中预填充子记录中的外(父)键会导致导航错误

  5. 5

    在Rails中创建记录后如何延迟

  6. 6

    创建记录后,是否可以在OrientDB中更新记录的类?

  7. 7

    创建父记录后创建空的子记录(第4条)

  8. 8

    创建子记录时,使用子recordName填充CloudKit中的父引用(列表)

  9. 9

    使用SQLite中的子查询更新记录并添加记录

  10. 10

    创建父记录后自动创建关联记录

  11. 11

    使用Rails中的按钮更新记录?

  12. 12

    在PostgreSQL中父级记录的级联删除后,是否有办法保留子记录

  13. 13

    添加子记录后,未将父记录添加到数据库中

  14. 14

    在Entity Framework中添加子记录时,如何避免创建父记录?

  15. 15

    如何在rails中显示父记录及其子记录总数

  16. 16

    无法创建或更新Rails 4中的belongs_to记录

  17. 17

    从AngularJS在Rails中创建记录

  18. 18

    将Props记录在子组件中会提供更新后的值,而在父级中定义的状态本身仍不会更新

  19. 19

    访问Rails 4中的父记录

  20. 20

    在一对多Rails ActiveRecord关系中,获得父记录只有子记录的最佳实践是什么?

  21. 21

    Rails创建新记录而不是更新

  22. 22

    Rails中的自我连接正在返回每个预期子行的父记录

  23. 23

    在 Rails 中不使用哈希创建活动记录

  24. 24

    使用 collection_select 在 rails 中创建多条记录

  25. 25

    Rails-在子范围内的计算中使用父记录列值

  26. 26

    使用ajax,Rails,Coffeescript,jQuery更新列表中的记录

  27. 27

    使用ajax,Rails,Coffeescript,jQuery更新列表中的记录

  28. 28

    保存记录后,灰烬更新父路线的模型

  29. 29

    用于创建父/子记录关系的 DataHandler 结构

热门标签

归档