小编hen*_*tha的帖子

使用ActiveRecord,有没有办法在after_update期间获取记录的旧值

使用一个简单示例进行设置:我有一个table(Totals),它保存amount第二个表(Things)中每个记录的列的总和.

thing.amount更新时,我想简单地添加旧值和新值之间的差异total.sum.

现在我正在减去self.amount期间before_updateself.amount在期间添加after_update.这使得WAY过于信任更新成功.

约束: 我不想简单地重新计算所有交易的总和.

问题:很简单,我想在after_update回调期间访问原始值.你有什么方法可以做到这一点?

更新:我将采用Luke Francl的想法.在after_update回调期间,您仍然可以访问self.attr_was我想要的值.我还决定使用after_update实现,因为我想在模型中保留这种逻辑.这样,无论我将来如何决定更新交易,我都知道我正在更新交易总和.感谢大家的实施建议.

activerecord model ruby-on-rails callback

74
推荐指数
6
解决办法
4万
查看次数

如何在spring boot中重命名json对象(变量)名称

您好我是Spring Boot和JSON的新手,需要帮助重命名响应中的变量名称.

将此视为输入

   "1":    {
      "id": "1",
      "firstName": "Cdgdghirayu",
      "lastName": "Sinfsdgdgghvi",
      "age": 23
   }
Run Code Online (Sandbox Code Playgroud)

现在响应我需要这种格式

   "1":    {
      "Roll number": "1",
      "firstName": "Cdgdghirayu",
      "lastName": "Sinfsdgdgghvi",
      "age": 23
   }
Run Code Online (Sandbox Code Playgroud)

我们"id"可以"roll number"用某种方式映射吗?如何在spring-boot中实现这一目标?

提前致谢

upadte-这是我的模特课

package model;

import javax.xml.bind.annotation.XmlRootElement;
import com.fasterxml.jackson.annotation.JsonProperty;

@XmlRootElement
public class Person {
@JsonProperty("Roll Number")
private String id;

private String firstName;
private String lastName;
private int age;

public Person() {
    super();
}

public Person(String id, String firstName, String lastName, int age) {
    super();
    this.id = id;
    this.firstName …
Run Code Online (Sandbox Code Playgroud)

rest json jax-rs jackson spring-boot

9
推荐指数
1
解决办法
1万
查看次数

我什么时候应该使用委托,什么时候应该使用has_one:through?

Rails有两种很好的方法可以避免模型中的Demeter违规.

首先是:

class Restaurant < ActiveRecord::Base
    belongs_to :franchise
    delegate :owner, to: :franchise
end
Run Code Online (Sandbox Code Playgroud)

第二个是:

class Restaurant < ActiveRecord::Base
    belongs_to :franchise
    has_one :owner, through: :franchise
end
Run Code Online (Sandbox Code Playgroud)

有什么不同?在某些或所有情况下,有什么可以推荐一个选项吗?

我可以检测到的唯一区别是该delegate选项似乎生成两个SQL查询以获取后一个记录,而belongs_to :through似乎在一个查询中执行.

database ruby-on-rails law-of-demeter

7
推荐指数
1
解决办法
769
查看次数

大多数Pythonic方式进行输入验证

在Python中进行用户输入验证的最"正确"Pythonic方法是什么?

我一直在使用以下内容:

while True:
    stuff = input("Please enter foo: ")
    try:
        some_test(stuff)
        print("Thanks.")
        break
    except SomeException:
        print("Invalid input.")
Run Code Online (Sandbox Code Playgroud)

我想,这是好的和可读的,但我不禁想知道是否有一些内置函数或我应该使用的东西.

python validation assert user-input

6
推荐指数
1
解决办法
8383
查看次数

Python:是否有用于更改实例类的用例?

相关:Python对象转换

我最近了解到Python允许您像这样更改实例的类:

class Robe:
    pass

class Dress:
    pass

r = Robe()
r.__class__ = Dress
Run Code Online (Sandbox Code Playgroud)

我试图弄清楚是否存在"转化"这样的对象可能有用的情况.我在IDLE中搞砸了这个,我注意到的一件事是,分配一个不同的类不会调用新类的__init__方法,尽管如果需要可以明确地完成.

事实上,我能想到的每个用例都可以通过编写更好地服务,但我是一个新编码,所以我知道什么.;)

python object

5
推荐指数
1
解决办法
124
查看次数

Python:从另一个模块访问对象

我是一个非常缺乏经验的程序员创建一个游戏(使用Python 3.3)作为一个学习练习.我目前有一个主模块和一个战斗模块.

游戏中的人员由"Person"类的实例表示,并在主模块中创建.但是,战斗模块显然需要访问这些对象.此外,我可能稍后会创建更多模块,这些模块也需要访问这些对象.

如何允许其他模块从main.py访问人员?

事实上,main.py有

import combat
Run Code Online (Sandbox Code Playgroud)

在顶部; 加入

import main
Run Code Online (Sandbox Code Playgroud)

对combat.py似乎没有帮助.

我应该在一个单独的模块(common.py?)中实例化我的对象,并将它们导入到需要访问它们的每个模块中吗?

python scope object

4
推荐指数
1
解决办法
1万
查看次数

为什么在Python中'声明'变量?

我之前在Google上搜索了一些与Python相关的问题,并偶然发现了这个页面.作者做了类似以下的事情:

class TestClass(object):
    first = str()
    def __init__(self):
        self.first = "Hello"
Run Code Online (Sandbox Code Playgroud)

那个"声明"这个变量first有什么意义呢?我以前从未见过这样做过,而且我不能为我的生活想到这样一种情况,即在为变量赋值之前创建一个变量是有益的.

上面的例子可能看起来像这样:

class TestClass(object):
    def __init__(self, first="Hello"):
        self.first = first
Run Code Online (Sandbox Code Playgroud)

......或者我错过了什么?

python variable-declaration

1
推荐指数
1
解决办法
238
查看次数

匹配"profile view"或"view_profile"而不是"profile.profile"或"view(view)"的最简洁方法是什么?

我基本上正在寻找一个匹配这些的正则表达式:

ProfileView
profile_views
views of candidate profile
viewed_profile
Run Code Online (Sandbox Code Playgroud)

但不是这些:

profile(profile)
view = candidate.view
Run Code Online (Sandbox Code Playgroud)

换句话说,我想要a.+bb.+a不想a.+ab.+b.

我认为这需要以某种方式捕获组,但我不太确定如何.(a|b).+(^\1)......如果你理解我的意思,那就是这样的.

regex

1
推荐指数
1
解决办法
48
查看次数