Ruby在Rails上 - 在创建新条目时,使用回调将两个对象乘以单独的表中 -- ruby-on-rails 领域 和 activerecord 领域 和 model-associations 领域 相关 的问题

Ruby on Rails - Using callback to multiply two objects in separate tables when new entry is created


简体版||繁體版
0
vote

问题

中文

我有3个表,目标,活动和守门员。目标具有XP的设定值,并且活动占用用户的输入。在活动中使用on_create方法,我想将用户输入乘以目标XP并将其存储在目标活动表中,以便我可以保留每个更新的记录,并最终将它们全部添加到一起创建总目标XP目标表。

我在So中找到了几个问题,这里 这里,涵盖类似的主题,但我找到了它很难在模型文件之间的关联周围以及如何在不同模型中访问某些方法之间的关联。

我还在回调

此刻是我的模型关联。

目标.rb

  class Goal < ActiveRecord::Base   has_many :goal_activities   has_many :activities, through: :goal_activities end   

goal_actity.rb

  class GoalActivity < ActiveRecord::Base   belongs_to :goal   belongs_to :activity end   

活动.rb

  class Activity < ActiveRecord::Base   has_many :goal_activities   belongs_to :goal, through: :goal_activities end   

以下是表中的一组示例值。

目标

goal_id:1,xp:500,total_goal_xp:默认0

活动

activity_id:1,规格:3,goal_id:1

noge_activities

goal_actity_id:1,goal_id:1,activity_id:1,total_xp:1500

一旦创建活动,将在目标表中添加到GOART_GOAL_XP中。

任何建议都将得到理解。如果您有任何疑问,请告诉我。

英文原文

I have 3 tables, Goals, Activities and Goal_Activities. Goal has a set value for xp and Activity takes an input from the user. Using the on_create method in Activity, I'd like to multiply the user input with the goal xp and store that in the Goal Activities table so I can keep a record of each update and eventually add them all together to create a total goal xp in the Goal table.

I've found a couple of questions on SO, here and here, that cover similar topics but I'm finding it hard to get my head around the associations between the model files and how to access certain methods in different models.

I've also read the documentation on callbacks which I think is what I need to setup but if there's a better way of doing it, please let me know.

Here are my model associations at the moment.

goal.rb

class Goal < ActiveRecord::Base   has_many :goal_activities   has_many :activities, through: :goal_activities end 

goal_activity.rb

class GoalActivity < ActiveRecord::Base   belongs_to :goal   belongs_to :activity end 

activity.rb

class Activity < ActiveRecord::Base   has_many :goal_activities   belongs_to :goal, through: :goal_activities end 

Here are a set of example values in the tables.

Goals

goal_id: 1, xp: 500, total_goal_xp: default 0

Activities

activity_id: 1, quantity: 3, goal_id: 1

Goal_activities

goal_activity_id: 1, goal_id: 1, activity_id: 1, total_xp: 1500

The total_xp would then be added to the total_goal_xp in the Goal table once the activity has been created.

Any advice would be appreciated. Let me know if you have any questions.

        

回答列表

0
 
vote
vote
最佳答案
 
你可以使用 after_create 回调在你的<代码> activity.rb 为
  after_create :set_total_xp  private  def set_total_xp   goal_activity = self.goal_activities.where(goal_id: goal_id).first_or_initialize   goal_activity.update_attribute(:total_xp, (quantity*goal.xp)) end   
 

You can use after_create callback in your activity.rb as

after_create :set_total_xp  private  def set_total_xp   goal_activity = self.goal_activities.where(goal_id: goal_id).first_or_initialize   goal_activity.update_attribute(:total_xp, (quantity*goal.xp)) end 
 
 
       
       

相关问题

0  通过中间第三表对两个关联表进行封实  ( Sequelize two associate tables by an intermediate third table ) 
所以,我最终使关联在我的efeelize代码中工作。或者我想。 我有与通过外键关联的表B和表B相关联。我想从A,B和C的使用过滤器获取行。如果C从图片中的任何东西我会做这样的事情: models.A.findOne({ attributes: ['id', 'col1', 'col2'...

3  如果关联存在,如何禁止删除  ( How to forbid deletion if association present ) 
我在两个型号之间有很多关系,如下所示: #users.rb has_many :users_to_roles has_many :roles, through: :users_to_roles #users_to_roles.rb belongs_to :user belongs_to :role #role...

0  Rails 5 - 通过包含方法的另一表连接的查询中的链接相关表  ( Rails 5 link associated tables in query that is joined through another table w ) 
我正在尝试将关联的表添加到通过另一个表加入的查询。例如,下面,我想包括设施(虽然我知道它没有有效语法)。 POST2 属于 POST3 和 POST4 属于 POST5 。 ( POST6 表有一个 POST7 字段, POST8 表有一个 POST9 字段。) sudo代码: $_POST['prop...

32  Extjs 4:具有关联和商店的模型  ( Extjs 4 models with associations and stores ) 
简介 我面临着extjs中 Ext.data.Model 类的应用程序设计问题。我会尝试在这里开发我的想法在这里是一个非常常见的在线商店场景,所以你可以跟着我。我真的很感谢对我的思想和结论的任何意见! 型号 让我们假设您想映射"每个客户可以订购多个产品" 到EXTJS的事实。从裸露的单词中可以识别涉及这三个模型: ...

1  section_id:nil应该是section_id:1  ( Section id nil when it should be section id 1 ) 
我遵循Lynda.com与凯文斯科格尔德的教程。我在"多对多" 的关联之后:富有的"视频,当我出现问题时。最后一行ran( 99887662 ) 导致以下内容: SectionEdit id: 6, admin_user_id: 1, section_id: nil, ... 但是,凯文的结果在教程中是:...

0  如何将可能的属性存储在Rails中  ( How to store possible attributes in rails ) 
我有问题模型,它具有属性"状态" ,"代码" ,"类型" 。 所有三个属性应该是下拉,说出状态可以是"活动/关闭/非活动" 等。 这些下拉的所有可能选项都应该是来自数据库。存储这一点的最佳方式是什么。 我计划创建新的模型说查找有 [lookup_for][lookup_type][lookup_value] ...

1  索引和检索性能如何随着ELASTISEARCH服务中的数据大小的增加而降低?  ( How does the indexing and retrieving performance degrade with increase in data s ) 
我想知道Elasticsearch服务的性能如何降低/降低数据增加。是否有任何指定的指标? ...

1  如何通过多个关联将Lambda参数传递在Rails 4中  ( How to pass lambda parameters in rails 4 with multiple associations ) 
我一直在尝试在2个型号之间实现多个关联,以便国际象棋游戏。 我为用户和游戏创建了模型,如下所示: class User < ActiveRecord::Base has_many :games # scope to define games as all games played by given us...

1  Cakephp / Crogo:Veeery Complex Association  ( Cakephp croogo a veeery complex association ) 
当我在我当前的项目工作时,我遇到了一个相当复杂的问题。我现在将稍微详细地指出我的问题: 有三个模型:用户,usersextendedfield和usersextended。 usersextendedfield包含可以手动管理的自定义字段。所有自定义字段也可以在用户视图中显示,并当然可以填写。然后将值存储在use...

0  Laravel 5,使用关联/枢轴表筛选数据库查询  ( Laravel 5 filter data base query using association pivot table ) 
我想要的是与项目关联的所有行业的列表。我可以获得是所有行业ID Per Project 使用关联表。我不能弄清楚如何返回每个行业 - &gt;名称从那些ID。 我在我的数据库中有三个表:项目,projects_industries和行业。 'projects_industries'表有'id','project_...

0  嵌套属性不会从其父级占用参数  ( Nested attribute doesnt take parameter from its parent ) 
我已经通过2个脚手架创建了一个投资组合,其中一个用于投资组合本身,另一个用于图像的另一个脚手架,由CarrierWave上传 这不是我第一次这样做,但这是我第一次遇到这个问题: def create @multifichier = Multifichier.new(multifichier_params)...

42  两个型号为两个属于_致敬  ( Same model for two belongs to associations ) 
我有一个模型 PointOfContact 哪个 has_many Systems 。来自 Systems 侧面我想识别 PointOfContact 作为 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas...

1  Rails找到方法未使用我的外键  ( Rails find method didnt use my foreign key ) 
我有以下两种型号: WebRequest request = HttpWebRequest.Create(uri); Task<WebResponse> responseTask = request.GetResponseAsync(cancellationToken); Func<Task<WebRespons...

1  Sequelize V3 - 如何为Hasmy关系进行空名单进行默认值?  ( Sequelize v3 how do i make the default value for a hasmany relationship an emp ) 
我正在使用 sepelize 作为我的orm。我有一个简单的 User 型号如下所示。 a User hasMany comments ,a Comment belongsTo a user < /代码>。 models/user.js (修剪到相关的内容) const model = (...

1  eSeedize返回手动定义的连接表关联  ( Sequelize return association of manually defined join table ) 
我正在使用postgres esefelize。我的两个表( 99887667 和 subcontractor )由手动定义的表加入( 99887669 )。 var audioCtx = new(window.AudioContext || window.webkitAudioContext)(); var...

0  Rails对来自两列的值进行排序  ( Rails sorting on a value coming from two columns ) 
我有两个表,a和b. a和b有外键。 istiverecord都是。 class A has_one :b def valueRendered b.value1 || b.value2 end end class B ( belongs_to :a, :foreign_key => :k...

-1  在Rails查询中获取Has_Many关联的数量  ( Get count of has many association in rails query ) 
我有两个 model 。 Post 和`评论'。 Post has_may comments 。 查询: 我想得到哪个帖子的最大评论数。 这应该通过 rail 查询来完成。 ...

20  Rails关联方法如何工作?  ( How do rails association methods work ) 
rails关联方法如何工作?让我们考虑这个例子 class User < ActiveRecord::Base has_many :articles end class Article < ActiveRecord::Base belongs_to :user end 现在我可以做一些像 ...

0  在Rails 4中显示嵌套关联  ( Displaying nested association in view in rails 4 ) 
我有3个如下型号: <h:form.../>4 ,我试图在我的"show kick视图" 中显示零售商的名称,如下所示: <h:form.../>5 off.name显示精确,但我似乎无法从此视图中索引零售商的名称。我错过了什么? 错误: <h:form.../>6 ...

2  sails.js - 如何使用关联更新模型  ( Sails js how to update model with associations ) 
我正在尝试使用带有关联的模型。我有两个模型定义如下: user.js module.exports = {schema: true, attributes: { userId: { autoIncrement: true, type: integer, pr...

0  蛋糕PHP模型协会 - 我做错了什么?  ( Cake php model associations what am i doing wrong ) 
无论我通过文档读取多少次,请查看示例我无法将模型与另一个"关联" 。 这是我的例子: 我有一个名为套件的表,也称为等级(阅读书籍和作者)。 套件看起来像这样(简体): id(pk) super_id(fk) 名称 等级看起来很喜欢这个: id(pk) 代码 每个套件只有1年级。我没有看到命名约定的任...

13  Rails - 在创建回调和嵌套属性后的执行序列  ( Rails execution sequence of after create callback nested attributes ) 
我有一个简单的 998876669 和 import pandas as pd df1 = pd.read_csv('0.csv', index_col=0, parse_dates=True, infer_datetime_format=True) df2 = pd.read_csv('1.csv', index...

0  CakePHP模型扩展协会  ( Cakephp model extended association ) 
在查看库存类别摘要时,我可以获得库存,但不是库存。 CakePHP报告的错误是[模型"库存" 与模型"InventyImage" 无关。这些是我雇用的型号: class InventoryCategory extends InventoriesAppModel { public $hasMany = a...

0  DomainCollectionView和WCF RIA Service中的Association属性  ( Association property in domaincollectionview and wcf ria services ) 
我在我的poco类中有一个关联,前: public class Category() { [Key] public int id { get; set} public string Name { get; set; } /* HERE */ public virtual I...

0  CakePHP在手动登录时添加相关模型  ( Cakephp add associated model on manual login ) 
在cakephp中我有两个型号 User 和 Account , User belongsTo Account 型号,现在在Logon by Cakephp UsersController->login 方法将关联表自动添加到会话变量,但是当我手动登录 $this->Auth->login($user['User'...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有