有关系的选择者

时间:2012-03-01 04:57:39

标签: ruby-on-rails ruby-on-rails-3 model null database-relations

当您想要添加与模型中定义的关系相关的where子句时,是否有一种特殊的方法可以调用对象。

一个例子是我有一个图像,图像belongs_to或has_many(无论你的船是什么岩石)一个类别,我想选择所有没有任何相关类别的图像。

所以对于一个简单的belongs_to我可以说:

Image.where('category_id is null')

但是有没有更好的方法来实现这一点,因为关系已经在模型中明确定义了?

2 个答案:

答案 0 :(得分:0)

使用where使用string clause时感到不舒服吗?每次使用where时都会有这种感觉。

您也可以

Image.where(:category_id=>nil)

或使用动态查找器方法

Image.find_all_by_category_id(nil)

或通过关联加载 @images = Category.find(some_cat_id).images

(这个不适用于零)

我认为所有这些都应该生成或多或少相同的SQL。

答案 1 :(得分:0)

试试这个:

Image.find(:all, :conditions => 'category_id is null')