我只是想知道是否有人可以提供帮助。
我试图通过rails控制台获取模型的名称,它给了我不同的结果。
首先我做:
Department.first.name
结果是:
Department Load (0.3ms) SELECT "departments".* FROM "departments" ORDER BY "departments"."id" ASC LIMIT 1
=> "Operations"
然后我做了:
ops = Department.where(name: "Operations")
结果是:
=> ActiveRecord::Relation #[Department id: 1, name: "Operations", created_at: "2017-10-22 00:40:51", updated_at: "2017-10-22 00:40:51"]>
但是如果我想要获得:
ops.name
结果是:
=> "Department"
这让我感到困惑并导致了关联问题。请帮忙!
答案 0 :(得分:1)
那是因为当你使用$(document).ready(function() {
setTimeout(function() {
$('a.etheme-popup').trigger('click');
},2000);
});
时,这会给你一个where
,正如你所看到的,它们可以是单个或多个对象,具体取决于数据库中的内容,但你必须将它们迭代到给出每个属性的具体属性。
如果您使用ActiveRecord::Relation
,它会为您提供特定记录,这就是您可以“直接”访问此对象属性的原因。
如果您想获得每个部门的名称属性,那么您可以使用Model.first
,例如:
pluck
答案 1 :(得分:0)
即使ops
只有一个结果不是一个Department
而是一个ActiveRecord::Relation
,所以
ops.name
正在为您提供模型名称(类名)。
你需要得到第一个
ops.first.name
答案 2 :(得分:0)
ops = Department.where(name: "Operations")
返回ActiveRecord::Relation
个对象。不是Department
对象(除非你声明一个cosntraint(第一个,最后一个等))。您已为name
类定义了Department
属性,该属性从数据库返回name
字段。不适用于ActiveRecord :: Relation;而name
在那里有不同的含义。它返回关系/类的名称。