我有一个简单的模型:
class Project < ActiveRecord::Base
belongs_to :user
class User < ActiveRecord::Base
has_many :projects
Project有一些属性,如:date,:name,对于那些属性,我有可用的属性查询方法:
project.date?
project.name?
但我没有:
project.user?
相反,我有:
project.user_id?
一瞥代码就会发现这是因为实际的“属性”是user_id,这就是属性查询方法的用途?这个想法的逻辑扩展似乎也是关系的查询方法。
通常的做法是什么?似乎我们有一些粗略的等价物可供选择:
project.user.present?
project.user.blank?
project.user.nil?
或者只是使用{relation}_id?
方法并停止抱怨?
答案 0 :(得分:1)
为什么不自己定义项目方法以满足您期望的API?
class Project < ActiveRecord::Base
def user?
true if user.present?
end
end
我认为Ruby中的最佳实践,坦率地说,在所有编程中都要明确指定你的界面,如果你认为那个用户?是最好的方法,然后我说去吧。