我有一个包含表用户和表黑名单的数据库
在我的用户模型中,我想搜索列legacy_logid中黑名单表中是否存在用户ID。
所以我定义了
def blacklist_ip
if Blacklists.legacy_logid == user.id
Blacklists.value
else
nil
end
end
在我看来,这是一个非常简单的方法,要求检查表并查看userID是否在那里。 但没有......
uninitialized constant User::Blacklists
那么如何访问此模型中不同表中的记录。 legacy_logid是表的属性 - 我想要做的就是查找它。
如果我尝试使用:: Blacklists,我会
uninitialized constant Blacklists
如果我尝试
def blacklist_ip
if Blacklist.legacy_logid == user.id
Blacklist.value
else
nil
end
end
我得到了
Undefined method `legacy_logid' for #<Class:0x00000006407e40>
我将黑名单定义为
class Blacklist < ActiveRecord::Base
end
它不是我想要查找的方法 - 一个属性,但这似乎只是以不合逻辑的方式访问。
答案 0 :(得分:1)
首先,rails模型名称以单数形式写入,而表格为复数形式。
因此,请确保您有一个表users
和另一个blacklists
,以便您可以分别通过User
和Blacklist
模型访问它们。
您可以通过执行以下操作查找blacklists
中是否存在具有给定用户ID的记录:
def blacklist_ip
Blacklist.where(legacy_logid: self.id)
end
我认为您的模型之间的关系User
有很多Blacklist
而Blacklist
属于User
。
如果您定义下面的User
类,则可以返回给定用户的所有黑名单:
class User < ActiveRecord::Base
has_many :blacklists
def blacklist_ip
self.blacklists
end
end