Работает в приложении с несколькими арендаторами, где у большинства моих моделей будет поле tenant_id, поэтому я могу обеспечить разрешение на чтение путем поиска через ассоциацию (current_tenant.applications.find(params[:id])
):Rails 'includes() не работает с условиями динамической ассоциации
class Application < ActiveRecord::Base
belongs_to :tenant
has_many :app_questions, :conditions => proc {{:tenant_id => tenant_id}}, :dependent => :destroy
end
Мне нравится, как это позволяет мне элегантно создать новый AppQuestion с tenant_id набор автоматически:
@application = current_tenant.applications.find(params[:app_question][:application_id])
@question = @application.app_questions.build(params[:app_question])
#...
Проблема заключается в том, когда я пытаюсь использовать includes()
нетерпеливым нагружать ассоциацию он выдает ошибку:
current_tenant.applications.where(:id => params[:id]).includes(:app_questions => :app_choices).first
NoMethodError (undefined method `tenant_id' for #<Class:0x007fbffd4a9420>):
app/models/application.rb:7:in `block in <class:Application>'
Я мог бы реорганизовать, чтобы у меня не было процесса в условиях ассоциации, но мне интересно, есть ли у кого-то лучшее решение.
терпение does say: «Если вам нужно оценить условия динамически во время выполнения, используйте процедурный»
просто нашел еще один плакат с такой же проблемой: http://stackoverflow.com/questions/6684521/rails-including-associations-with-dynamic-conditions – tybro0103