如何在 rails 中调用实例对象的方法?
How do I call a method on an instance object in rails?
我有 User
个配置文件,用户有 Records
个 belong_to
个用户。在我的 users/show/1
路径中,我只想在用户有记录时显示记录部分。所以,在我的用户模型中,我写了一个方法:has_records?
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?
当然,首先您需要将方法的类型从 class method
更改为 instance method
所以你在 user model
中的方法就像
def has_records?
true if self.records.size > 0
end
如果您将在 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
它应该可以工作
我有 User
个配置文件,用户有 Records
个 belong_to
个用户。在我的 users/show/1
路径中,我只想在用户有记录时显示记录部分。所以,在我的用户模型中,我写了一个方法:has_records?
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?
当然,首先您需要将方法的类型从 class method
更改为 instance method
所以你在 user model
中的方法就像
def has_records?
true if self.records.size > 0
end
如果您将在 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
它应该可以工作