我有这样一个关系:用户可以拥有零只或一只狗,但是一只狗必须属于某个人。
我想定义以下范围:
感谢您的帮助!
# 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中默认情况下连接是内部连接:
scope :with_a_dog, :joins(:dog)
1/ 这个解决方案对于第一个范围是否足够好?
2/ 对于第二个范围,你会怎么做?
3/ (有点相关)还有更好的方法吗?:
# user.rb
def has_a_dog?
!self.dog.nil?
end
感谢您的帮助!