rails has_one有多个条件

时间:2016-07-28 12:59:58

标签: ruby-on-rails

我想创建一个has_one关联,其条件将具有内部查询。

 class A < ActiveRecord::base
    has_one :table_b, :order => 'id ASC' :class_name => 'B' :conditions => ""
 end

table_b的架构

table_b

id
name

我要生成相应的sql查询 -

select * from table_b where name = "dummy" and id in (select * from table_b order by id limit 1)

是否可以编写一个可以执行此sql语句的条件。

1 个答案:

答案 0 :(得分:0)

如果我理解你的话。我应该在table_b = table_a_id(类型为整数)中添加关系列,然后使用范围,例如:

class ModelA < ActiveRecord::base 
  has_one :model_b, foreign_key: 'table_a_id', class_name:'ModelB'
end

class ModelB < ActiveRecord::base
  belongs_to :model_a
  scope :by_name, -> (name) { where(name: name) }
end

并像这样打电话

instance_a = ModelA.first 
instance_a.model_b.by_name('dummy')