我的实际代码如下所示
user_lesson = self.where("worked = ? AND passed = ?", true, false).order("lessons.sort")
但它不起作用......错误是:
undefined method `where' for #<Membership:0x000000059f22e8>
..我已经尝试过这种方式:
user_lesson = Membership.joins("user_lessons").where("id = ? AND worked = ? AND passed = ?",self.id, true, false).order("lessons.sort")
但是后来我得到了这个错误:
Unknown table 'memberships': SELECT `memberships`.*
FROM `memberships` user_lessons
WHERE (id = 4 AND worked = 1 AND passed = 0)
ORDER BY lessons.sort
它应该是什么样子才正确?
原始查询
user_lesson = self.user_lessons.find :first,
:include => [:lesson],
:conditions => ["worked = ? AND passed = ?", true, false],
:order => "lessons.sort"
最佳答案
这是因为 where
方法是在类级别而不是实例级别定义的。在您的第二个示例中(您正在执行 Membership.joins
),您通过在 上调用
类而不是该类的实例。第二个示例出现错误的原因可能是因为您需要运行迁移来创建成员资格表(如果您没有迁移,则需要创建一个)。joins
和 where
来做正确的事情>Membership
关于ruby-on-rails - Ruby on Rails self.joins 或 self.where 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30089688/