rails 中的实例是什么?

What is an instance in rails?

我有这个型号。我的朋友告诉我的。我应该在 unique/confno 上只有一个 INSTANCE 。 .

这里的实例在哪里?

class Confbridge < ActiveRecord::Base
  has_many :confbridge_schedules, :dependent => :destroy

  validates :confno, uniqueness: true, :allow_nil => true, :allow_blank => true

 :confno => confno, :circle => cid, :confbridge_id => id )

end

以及如何轻松理解实例?

谢谢:)

一个实例通常代表您数据库中的一行 table,但更一般地说,它具有与您的 class 相关的非常具体的含义。

类 和实例是面向对象编程的概念,但也可以出现在其他上下文中。

即使在现实世界中... 假设您有一个名为 'Car'

的 class

一个实例是您现在停在车库中的特定汽车。另一个例子是你邻居的车。

在数据库上下文中,如果你的 class 被称为 'EmployeeRecord' 那么它的一个实例就是包含你的名字和 employee-number 的记录,而不是一个给你的老板。

但在你的情况下,Rails: 您有一个名为 Confbridge 的 class。如果您使用 conf = Confbridge.new 创建一个新的,那么您在变量 conf 中拥有的是 class Confbridge

的一个实例

具体查看您显示的代码 - 您在该代码中没有实例。您在上面显示的是构成 Confbridge class 的代码 - 从中​​您可以创建实例,这些实例将具有您在编写 class 时定义的属性(例如,您的每个实例如果您调用 conf.save)

将验证 confno 是唯一的

简单来说,instance就是某个class的对象。在您的示例中 Confbridge 是一个模型 class。以下都是这个 class 的实例:

Confbridge.new
Confbridge.first
Confbridge.find(1)

一个实例来自Object Orientated Programming(Ruby是其支持者)...

OOP 基本上用 objects 替换了 variables(尽管它们是同一回事)。

两者之间的区别在于,对象被存储为"class"或"function",具有两个属性 函数 / 方法 附加到它。

简而言之,可以在应用程序中操纵对象,而变量是静态的。


游戏使用 OOP,因为它允许您在环境中调用一系列对象并与它们交互。

例如MarioMario是一个对象,Koopa可以是一个对象等等

当您移动时,您正在编辑环境中的 Mario 的 "position" (x/y),这也意味着如果坐标与另一个物体相交,马里奥死了...

def keypress
   @mario.move x,y
end

class Mario
   def move x,y 
     ##updates environment
     ##checks if collision
   end
end

这些对象之间的交互性让游戏看起来像是保留了它们的状态(每个敌人都是一个具有不同特征的对象)。

因此,当您想到Rails时,您必须意识到您所做的一切都是object-orientated。您所有的变量等都应该是对象。模型负责使用某些 attributes/methods 等构建这些对象:

#app/models/car.rb
class Car < ActiveRecord::Base
   def blow_up!
      self.destroy
   end
end

@car = Car.find params[:id] #-> invokes an instance of the Car object, populating with data from the db
@car.blow_up! #-> invoking the "blow_up!" instance method.

因此,为了描述一个对象的 实例 ,您说的是一个 class,它已经初始化并填充了来自您的数据库的数据。

在您的情况下,当您使用 class methods:

之一调用 class 时,实例出现在您的 Controller
@confbridge = Confbridge.find(1) #-> creates an instance
@confbridge.destroy              #-> performs action on instance