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]
正在获取属性实例变量,而不是调用方法