ActiveRecord关联的属性查询方法

时间:2012-02-28 23:17:14

标签: ruby-on-rails-3 activerecord

我有一个简单的模型:

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?方法并停止抱怨?

1 个答案:

答案 0 :(得分:1)

为什么不自己定义项目方法以满足您期望的API?

class Project < ActiveRecord::Base

  def user?
   true if user.present?
  end
end

我认为Ruby中的最佳实践,坦率地说,在所有编程中都要明确指定你的界面,如果你认为那个用户?是最好的方法,然后我说去吧。