Ruby on rails 3 ActiveRecord关联的属性查询方法
我有一个简单的模型:Ruby on rails 3 ActiveRecord关联的属性查询方法,ruby-on-rails-3,activerecord,Ruby On Rails 3,Activerecord,我有一个简单的模型: class项目
class项目
Project有几个属性,如:date、:name,对于这些属性,我可以使用属性查询方法:
project.date?
项目名称?
但我没有:
project.user?
相反,我有:
project.user_id?
只要看一眼代码,就会发现这是因为实际的“属性”是用户id,而这就是属性查询方法的目的?这似乎是这个想法的逻辑延伸,为关系也提供了查询方法
通常的做法是什么?似乎我们有一些粗略的等价物可供选择:
project.user.present?
project.user.blank?
project.user.nil?
或者只需使用
{relation}\u id?
方法并停止抱怨?为什么不自己在project上定义一个方法来满足您期望的API
class Project < ActiveRecord::Base
def user?
true if user.present?
end
end
class项目
我认为Ruby中的最佳实践,坦率地说,在所有编程中都是明确指定您的接口,如果您认为是用户?这是最好的方法,然后我说去做。当然,我觉得奇怪的是,除了那些碰巧基于关联的属性之外,看到生成的状态检查所有属性的简短方法。如果AR自动处理所有这些,为什么要区分?