除了最明显的事情之外,我真的很喜欢Rails的发现者。当事情变得比
更先进时,我总是求助于SQLModel.find(:all, :conditions => ['field>? and field<? and id in (select id from table)', 1,2])
我有这个方法:
def self.get_first_validation_answer(id)
a=find_by_sql("
select answers.*, answers_registrations.answer_text
from answers_registrations left join answers on answers_registrations.answer_id=answers.id
where
(answers_registrations.question_id in (select id from questions where validation_question=true))
and
(sale_registration_id=#{id})
limit 1
").first
a.answer_text || a.text if a
end
有人可以创建一个让我得到我想要的发现方法吗?
此致
雅各
答案 0 :(得分:4)
class AnswersRegistration < ActiveRecord::Base
has_many :answers
end
id = 123
the_reg = AnswersRegistration.first(
:joins => :answers,
:conditions => '(question_id in (select id from questions where validation_question = true)) and (sale_registration_id = ?)', id)
(未测试的)
答案 1 :(得分:0)
如果满足您的需要,只需使用binarylogic的Searchlogic gem。 在这里:http://github.com/binarylogic/searchlogic
答案 2 :(得分:0)
有时AR会在复杂的嵌套条件下窒息,但理论上你应该能够做到这一点:
AnswersRegistration.first(:conditions => { :question => { :validation_question => true },
:sale_registration_id => id },
:include => :answer)