Sas*_*sha 2 parameters ruby-on-rails self
消息和用户.我的消息belongs_to用户和用户has_many消息.
在我的一个观点中,我称之为
current_user.home_messages?
Run Code Online (Sandbox Code Playgroud)
在我的用户模型中,我有......
def home_messages?
Message.any_messages_for
end
Run Code Online (Sandbox Code Playgroud)
最后在我的消息模型中,我有
scope :any_messages_for
def self.any_messages_for
Message.where("to_id = ?", self.id).exists?
end
Run Code Online (Sandbox Code Playgroud)
香港专业教育学院一直试图在我的消息模型中获取current_users id.我可以从我的视图中传递current_user作为参数,但是我正在做
current_user.home_messages?
Run Code Online (Sandbox Code Playgroud)
我认为如果我使用自己会更好.但我该如何正确引用呢?
谢谢.
你可以使用lambda.在您的消息模型中:
scope :any_messages_for, lambda {|user| where('user_id = ?', user.id)}
Run Code Online (Sandbox Code Playgroud)
这将是这样的:
Message.any_messages_for(current_user)
Run Code Online (Sandbox Code Playgroud)
如果找到任何消息,您可以向用户模型添加一个方法以返回true.在这种情况下,您使用实例方法并将实例作为self传递:
def home_messages?
return true if Message.any_messages_for(self)
end
Run Code Online (Sandbox Code Playgroud)
但实际上,我只是在User模型中做这样的事情,而不必编写上述任何内容.这使用在声明:has_many和:belongs_to association时创建的Rails方法:
def home_messages?
return true if self.messages.any?
end
Run Code Online (Sandbox Code Playgroud)