我想创建一个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语句的条件。
答案 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')