0

我想在客户端上编写一个 Rails 3 范围来执行以下操作:

select * from clients c, dependents d
where d.last_name like '%ss%' and c.id = d.client_id;

依赖模型:

class Dependent < ActiveRecord::Base
  belongs_to :client
  scope :by_last_name, (lambda do |name| { :conditions => ['last_name LIKE ?', "#{name}%"]} end )

客户型号:

class Client < ActiveRecord::Base
  has_many :dependents, :dependent => :destroy

我还没有能够让范围连接在语法上工作。依赖的姓氏需要作为参数传入。谢谢。

4

2 回答 2

0

尝试这个:

class Client < ActiveRecord::Base
  scope :by_last_name, lambda { |last_name| includes(:dependents).where("dependents.last_name LIKE ?", "#{last_name}%") }

然后打电话

Client.by_last_name "last_name"

编辑:更改代码以反映您的问题。find_by_id(1) 也与 find(1) 相同,只是它在没有找到任何内容时不会抛出错误,而是返回 nil。

于 2012-10-26T10:32:25.190 回答
0

尝试以下操作:

scope :by_last_name, lambda {|name| where("dependents.last_name like ?", "'%#{name}%'")
于 2012-10-26T10:29:48.613 回答