rails中的实例是什么?

时间:2016-01-13 02:16:37

标签: ruby-on-rails ruby instance

我有这个模型。我的朋友告诉我。我应该在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

如何轻松降低实例费用?

谢谢:)

3 个答案:

答案 0 :(得分:4)

简而言之,实例是某个类的对象。在您的示例中,Confbridge是一个模型类。以下所有都是此类的实例:

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

答案 1 :(得分:2)

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

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

即使在现实世界...... 让我们假装你有一个名为'Car'的课程

一个例子就是您现在停在车库里的特定车辆。另一个例子是你邻居的车。

在数据库上下文中,如果您的类名为“EmployeeRecord”,那么该实例将是包含您的姓名和员工编号的记录,而不是您的老板。

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

要专门查看您显示的代码 - 您在该代码中没有实例。上面显示的是构成Confbridge类的代码 - 您可以创建具有您在编写类时定义的属性的实例(例如,每个实例都将验证confno如果您拨打conf.save

,则是唯一的

答案 2 :(得分:1)

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

enter image description here

OOP基本上用对象替换变量 (虽然它们是相同的东西)。

两者之间的区别在于对象存储为“类”或“函数”,同时具有属性函数 / 方法

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

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

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

当您移动时,您正在环境中编辑Mario的“位置”(x / y),这也可能意味着如果坐标与另一个对象相交,马里奥死了......

def keypress
   @mario.move x,y
end

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

这些物体之间的互动性使得游戏看起来像是保持状态(每个敌人都是具有不同特征的物体)。

因此,当您考虑Rails时,您必须明白您所做的一切都是面向对象的。所有变量等都应该是对象。模型负责使用某些属性/方法等构建这些对象:

#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.

因此,为了描述一个对象的实例,你所说的是一个已初始化的类&amp;填充了数据库中的数据。

在您的情况下,当您使用class methods之一调用类时,实例会出现在Controller中:

@confbridge = Confbridge.find(1) #-> creates an instance
@confbridge.destroy              #-> performs action on instance