rails在ActiveRecord中使用where方法中的关系

时间:2013-06-19 10:15:12

标签: ruby-on-rails ruby

试图在文档中查找,但找不到答案。如果我有一个属于用户的模型令牌,我可以这样做:

Token.where(:user_id => u.id)

其中u是User类的实例。

但是不可能这样做:

Token.where(:user => u)

这不应该是可能的,还是我错过了什么? (IMO更具表现力和更简单)。

1 个答案:

答案 0 :(得分:0)

您只能在where子句中使用数据库列名。 “user_id”是列名,但“user”是关联的名称。

如果您在用户模型和令牌模型之间有关联,那么您可以这样做。

u.tokens

协会应该是这样的。

class User < ActiveRecord::Base
   has_many :tokens
 end

class Token < ActiveRecord::Base
  belongs_to :user
end