当您想要添加与模型中已定义的关系相关的 where 子句时,是否有一种特殊的方式可以调用对象。
一个例子是我有一张图片,图片 belongs_to 或 has_many(不管你的船是什么)一个类别,我想选择所有没有任何关联类别的图片。
所以对于一个简单的belongs_to,我只能说:
Image.where('category_id is null')
但是有没有更好的方法来做到这一点,因为关系已经在模型中明确定义了?
当您想要添加与模型中已定义的关系相关的 where 子句时,是否有一种特殊的方式可以调用对象。
一个例子是我有一张图片,图片 belongs_to 或 has_many(不管你的船是什么)一个类别,我想选择所有没有任何关联类别的图片。
所以对于一个简单的belongs_to,我只能说:
Image.where('category_id is null')
但是有没有更好的方法来做到这一点,因为关系已经在模型中明确定义了?
where
与 a 一起使用您是否感到不舒服string clause
?每次使用都有这种感觉where
。
你也可以做
Image.where(:category_id=>nil)
或使用动态查找器方法
Image.find_all_by_category_id(nil)
或通过关联加载
@images = Category.find(some_cat_id).images
(这个对 nil 不起作用)
我认为它们都应该生成或多或少相同的 SQL。
试试这个:
Image.find(:all, :conditions => 'category_id is null')