【发布时间】:2011-04-19 23:39:26
【问题描述】:
我有这样的关系:一个用户可以有零条或一条狗,但一条狗必须属于某人。
# dog.rb
class Dog < ActiveRecord::Base
belongs_to :user
end
# user.rb
class User < ActiveRecord::Base
has_one :dog
end
我想定义以下范围:
User.with_a_dog
User.without_a_dog
我可以在第一种情况下这样做,因为在 rails 中默认情况下连接是 INNER JOIN :
scope :with_a_dog, :joins(:dog)
1/ 第一个范围的解决方案是否足够好?
2/ 你会为第二个做什么?
3/(有点相关)有更好的方法吗? :
# user.rb
def has_a_dog?
!self.dog.nil?
end
感谢您的帮助!
【问题讨论】:
-
应该是范围 :with_a_dog, joins(:dog) 没有“:”
标签: sql ruby-on-rails activerecord