ruby-on-rails - Ruby on Rails 中链接对象的 Lambda 条件

标签 ruby-on-rails ruby lambda

我正在尝试在发票类中编写一个命名范围。发票对象有一个到作业对象的链接。工作对象有一个指向公司对象的链接。

class Invoice < ActiveRecord::Base
belongs_to :job

class Job < ActiveRecord::Base
belongs_to :company

我希望范围基于与工作相关的公司 ID 是否与传入的值匹配。

我正在尝试这样的事情

named_scope :job_company, lambda{|job_company_id| {:conditions => {job.company.id => job_company_id}}}

这给我一个错误,说

undefined local variable or method `job' for #Class:0x103239160

我该如何为此编写 lambda 函数?

注意:我正在使用 Ruby 1.8.7 和 Rails 2.3.5

最佳答案

named_scope 基本上只是一个类方法,所以在 lambda 内部,self 的范围是 Invoice。没有作业实例或局部变量,因此出现错误。

但是,这应该有效:

named_scope :job_company, lambda{|job_company_id| { :joins => { :job => :company }, :conditions => ["jobs.company_id = ?", job_company_id] }}

关于ruby-on-rails - Ruby on Rails 中链接对象的 Lambda 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6260323/

相关文章:

ruby-on-rails - 登录后重定向到特定 URL

javascript - 同一 link_to 助手的不同行为 - 模板丢失

mysql - Web开发从哪里开始?

java - Ruby 中调用 Java 代码的 Web 服务

html - 无法应用 css 样式来管理 gem UI View 以实现响应式

ruby on rails 递归子字符串

ruby - array select获取true和false数组?

c# - 如何正确地将 lambda 表达式的 "var"结果转换为具体类型?

c++ - 在这种情况下是否可以避免复制 lambda 仿函数?

c++ - C++ 中 std::function<void(Ref*)> 的含义是什么