Ruby on rails 从具有联接表的Activerecord中提取数据

Ruby on rails 从具有联接表的Activerecord中提取数据,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我想使用一个字符串,比如“Project.ProjectStatus.name”,它将返回加入的项目状态的名称,简单地说是Project.name .read_attribute()似乎没有深入到已加入/包含的记录。send在我这样做时起作用。send('ProjectStatus')。send('id')。但这似乎并不理想,可能很危险,这些变量来自用户 这是一个模板引擎,所以我可能会有这样的东西。。 “{Project.name}}状态已更改为{{ProjectStatus.name}” 我能

我想使用一个字符串,比如“Project.ProjectStatus.name”,它将返回加入的项目状态的名称,简单地说是Project.name

.read_attribute()似乎没有深入到已加入/包含的记录。send在我这样做时起作用。send('ProjectStatus')。send('id')。但这似乎并不理想,可能很危险,这些变量来自用户

这是一个模板引擎,所以我可能会有这样的东西。。 “{Project.name}}状态已更改为{{ProjectStatus.name}”


我能捡到什么宝石吗?我现在在谷歌搜索的东西真的累坏了。在CakePHP中,我使用了Hash::extract,它之前有点像xpath。

这里项目和项目状态之间的关联是什么?我假设它的
有一个::项目状态

无论如何,如果您希望能够调用
@project.name
(其中
@project
是类
project
的实例;
。name
应该特定于每个单独的项目,因此您应该将其定义为实例方法,而不是类方法
project.name
),可以在项目模型中创建方法:

Project.joins(:project_status).where(id: 1).first
假设您以前在模型中将关联定义为

def name
  project_status.name
end
现在,只需使用
.name

Project.joins(:Project\u status)。其中(id:1)。选择('Project\u statuses.name as Project\u status\u name,projects.*)
has_one: :project_status