Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 到底是什么?它是如何工作的_Ruby On Rails_Ruby_Activerecord - Fatal编程技术网

Ruby on rails 到底是什么?它是如何工作的

Ruby on rails 到底是什么?它是如何工作的,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,所以我研究了ruby中的关联,想知道它们是如何从语法的角度工作的 看看: class Project < ActiveRecord::Base belongs_to :portfolio has_one :project_manager has_many :milestones has_and_belongs_to_many :categories end class项目 f= fo。

所以我研究了ruby中的关联,想知道它们是如何从语法的角度工作的

看看:

class Project < ActiveRecord::Base
  belongs_to              :portfolio
  has_one                 :project_manager
  has_many                :milestones
  has_and_belongs_to_many :categories
end
class项目
我的理解是,有很多方法,例如,是一个用参数“里程碑”调用的方法。但这怎么可能呢?如何在类主体中有一个方法调用,而不是在另一个方法或函数中

不知道你是否明白我的意思。但希望有人能给我解释一下

但这怎么可能呢?如何在类主体中有一个方法调用,而不是在另一个方法或函数中

类定义和其他定义一样,只是代码。加载类文件时,将自上而下计算其主体。这包括像
这样的调用方法有很多
(这一个来自
ActiveRecord::Base
的深度)。或任何其他方法

class Foo
  puts "Loading class #{name}"
end

# >> Loading class Foo
请注意,此
put
仅通过使用类加载文件来执行。你甚至不必做
f=Foo.new
之类的事情

但这怎么可能呢?如何在类主体中有一个方法调用,而不是在另一个方法或函数中

类定义和其他定义一样,只是代码。加载类文件时,将自上而下计算其主体。这包括像
这样的调用方法有很多
(这一个来自
ActiveRecord::Base
的深度)。或任何其他方法

class Foo
  puts "Loading class #{name}"
end

# >> Loading class Foo

请注意,此
put
仅通过使用类加载文件来执行。你甚至不必做“代码> f= fo。新的<代码>或类似的任何东西。

< P> Ruby的对象模型与经典语言,如C++或java语言不同,类就像石碑上的蓝图。p> 在Ruby中,类是可变的类对象。另一种说法是类只是作为工厂来创建自身实例的对象

您可以在类定义中执行所需的任何代码:

class World
  puts "Hello #{name}"
end
因为它是从上到下评估的

这被广泛用于。例如,您可以使用
attr\u accessor
声明setter和getter:

class Person
  attr_accessor :age

  def initialize(age:)
    @age = age
  end
end
它通过添加
age
age=
方法来修改类。看起来是这样的:

class Person

  def age
    @age
  end

  def age=(value)
    @age = value
  end

  def initialize(age:)
    @age = age
  end
end

Rails关联以同样的方式工作,只是更加复杂<代码> RealsSoto:组合文件< /C>创建一个SETER和GETTER,并跟踪它是什么类型的关联。

< P> Ruby的对象模型与经典语言,如C++或java语言不同,类就像雕刻在石碑上的蓝图。p> 在Ruby中,类是可变的类对象。另一种说法是类只是作为工厂来创建自身实例的对象

您可以在类定义中执行所需的任何代码:

class World
  puts "Hello #{name}"
end
因为它是从上到下评估的

这被广泛用于。例如,您可以使用
attr\u accessor
声明setter和getter:

class Person
  attr_accessor :age

  def initialize(age:)
    @age = age
  end
end
它通过添加
age
age=
方法来修改类。看起来是这样的:

class Person

  def age
    @age
  end

  def age=(value)
    @age = value
  end

  def initialize(age:)
    @age = age
  end
end

Rails关联以同样的方式工作,只是更加复杂<代码>属于:公文包
创建一个setter和getter,并跟踪它是什么类型的关联。

顺便说一句,它是
attr\u访问器
,而不是
attribute\u访问器
。谢谢@SergioTulentsevAh,错过了另一个事件顺便说一句,是
attr\u访问器
,而不是
attribute\u访问器
。谢谢@SergioTulentsevAh,错过了另一件事