В моем приложении на Rails есть класс с отношением has_many.В целях эффективности я хочу сделать несколько прямых SQL-запросов для обновления сразу нескольких строк в базе данных, а затем я хочу пометить отношение has_many как недействительное.Если позже код получит доступ к отношению has_many, я хочу, чтобы он перезагрузил данные.Но я, очевидно, хочу пропустить SQL, если в этом нет необходимости.
Так, например:
class Student
has_many courses # may have a :condition clause or some such
def some_method
# For some reason, we want to change all courses in here, not
# just a single row.
ActiveRecord::Base.connection.execute("UPDATE courses SET location = #{new_location}")
# Not sure if we'll later do anything with self.courses, so I need to invalidate
# that relationship. Could do self.courses.reload right here, but I don't want to
# do the SQL if it isn't necessary; the cache only lasts until the end of the
# current page request.
end
end
Я вполне могу упустить что-то довольно очевидное.Некоторые гипотетические методы self.courses.invalidate.