ruby-on-rails - Ruby on Rails self.joins 或 self.where 不起作用?

标签 ruby-on-rails ruby ruby-on-rails-4

我的实际代码如下所示

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 ),您通过在 上调用 joinswhere 来做正确的事情>Membership 类而不是该类的实例。第二个示例出现错误的原因可能是因为您需要运行迁移来创建成员资格表(如果您没有迁移,则需要创建一个)。

关于ruby-on-rails - Ruby on Rails self.joins 或 self.where 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30089688/

相关文章:

ruby-on-rails - 正则表达式从字符串中删除字符

ruby-on-rails - Rails 迁移总是在模式中插入空格或更改列的顺序

ruby - 在服务器上更改 Time.now 以返回不同的时区

ruby-on-rails - rails Rspec `require' : cannot load such file -- rails_helper (LoadError)

ruby-on-rails - Ruby 中 For 和 Map 的区别

ruby-on-rails - 可以让 Rails 4 在 Windows 上工作吗?

ruby-on-rails - 访问模型中的current_user

ruby-on-rails - @x ||= 是否像 return @x if @x.present 一样工作?

ruby-on-rails - 将 ActiveRecord 语句转换为 postgresql 查询 - Rails 4/postgresql 9.4

javascript - 在 JavaScript 中为我的 Rails 应用程序显示弹出消息