2015-09-19 46 views
1

我有User配置文件和用户有Recordsbelong_to用户。在我的users/show/1路径中,如果用户有记录,我只想显示记录部分。所以,在我的用户模型中,我写了一个方法:has_records?如何在rails中的实例对象上调用方法?

def self.has_records?(usr) 
    return true if User.find_by_id(usr.id).records.size > 0 
end 

要调用这个方法,我需要在视图中,这实在是重复写User.has_records?(user)。我可以重构代码,可以说@user.has_records?

回答

3

如果你要定义里面的方法user模型

def has_records?(usr) 
    self.find_by_id(usr.id).records.size > 0 
end 

它会如果您想以has_records?方式发送其他用户的工作。如果您要检查同一个用户,然后

def has_records? 
    self.records.size > 0 
end 

它应该工作

+0

工程就像一个魅力!谢谢! –

+1

@MaximP如果它正在工作,你可以接受这个答案作为解决方案,这将是很好的谢谢 – Arvind

+0

@Arv我们通常在Ruby中使用隐式返回。我更新了你的回复。 –

1

当然首先你需要从class method方法的类型更改为instance method

让你的user model里面的方法是像

def has_records? 
    true if self.records.size > 0 
end 
+0

这是如此简单,完美的作品。谢谢! –

相关问题