Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.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 如何在rails 4中区分方法和属性_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 如何在rails 4中区分方法和属性

Ruby on rails 如何在rails 4中区分方法和属性,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我有一个cartridge和doming\u edge模型,这样它们就有了各自的关系。通过这样做,我可以称之为: @cartridge.dosing_edges 检索属于盒带的所有U形边缘。这就行了, 但盒带模型也有一个属性。如何区分方法和属性 我的意思是,如果我想访问@盒带.doming\u edges不调用方法。doming\u edges检索所有doming\u edges 或者我应该将我的属性重命名为不同的。为您的关联赋予不同的名称 has_many :all_dosing_edges

我有一个
cartridge
doming\u edge
模型,这样它们就有了各自的关系。通过这样做,我可以称之为:

@cartridge.dosing_edges
检索属于盒带的所有U形边缘。这就行了, 但盒带模型也有一个属性。如何区分方法和属性

我的意思是,如果我想访问
@盒带.doming\u edges
不调用方法
。doming\u edges
检索所有doming\u edges


或者我应该将我的属性重命名为不同的。

为您的
关联赋予不同的名称

has_many :all_dosing_edges, class_name: "DosingEdge"

据我所知,如果你有
doming\u edges
属性和
doming\u edges
方法,当你调用
对象时,doming\u edges
你会得到任何方法返回的结果,因为如果有一个与属性同名的方法,你基本上会覆盖属性,因为类的属性也是可以覆盖的方法。您可以将您的
重命名为不同的关系。

@MKumar您应该重命名您的关联。不过,作为一些解释,您可以使用
[:attname]
哈希样式表示法访问从数据库加载的属性(请参见答案底部)

因此,当您说
@cartridge.edges
时,您正在调用一个方法:rails默认情况下会为您定义此方法来读取属性,您可能已经用
has\u many
添加的方法覆盖了它,这将添加多种方法,包括
u边
(假设您尚未更改名称)

默认的
方法如下所示:

def dosing_edges
  self[:dosing_edges]
end
self[:u edges]
正在获取属性实例变量,而不是调用方法