2017-07-24 65 views
0

获得相关资源的头衔,我有2种型号的连接是这样的(客户和项目):的Rails通过ID

class Project < ActiveRecord::Base 
    belongs_to :cliente 
end 

class Cliente < ActiveRecord::Base 
    has_many :projects 
end 

项目在其架构中的一个:cliente_id列,所以,如果我做的:

Project.cliente_id我会正确得到cliente_id。

我的疑问是,我想要得到客户端名称从它的ID,所以我需要的东西,如:

Project.cliente_id.name 

这是获取这些信息的正确方法是什么?

回答

2

您可以使用project.cliente(请注意不使用_id)获得完整的Cliente对象。所以你可以像普通的Cliente一样使用它;例如,获得name只是做:

project = Project.find(1) 
project.cliente.name 
+0

我会得到:未定义的方法'名”的零:NilClass,在此先感谢 – Gibson

+0

好,谢谢!我不得不检查一下客户是否先关联。作为魅力工作! – Gibson

+0

这个答案将该类与实例混淆。例如,'Project.cliente'试图调用一个类对象的实例方法。这个答案是错误的,它在语法上不正确。 – anothermh

2

您找到相关对象through the association

project = Project.find(1) # Returns the full `project` object 
project.cliente # Returns the full `cliente` object 
project.cliente.name # Returns just the `name` attribute 
project.cliente_id == project.cliente.id # Returns true