gpt4 book ai didi

ruby-on-rails-4 - Rails 4 Has_Many with Finder_SQL 已弃用

转载 作者:行者123 更新时间:2023-12-02 01:20:11 24 4
gpt4 key购买 nike

我正在将 Rails 应用程序升级到 4.0。我收到以下弃用警告。我已经谷歌了这个,但没有找到任何告诉如何改变这一点的东西。

DEPRECATION WARNING: The :finder_sql association option is deprecated. Please find an alternative (such as using scopes)...

这是导致警告的范围:
has_many :elective_instructors,
:class_name => "Instructor",
:finder_sql => proc { "SELECT DISTINCT people.* FROM people
INNER JOIN class_sections ON class_sections.instructor_id = people.id
INNER JOIN courses ON courses.id = class_sections.course_id
INNER JOIN taken_classes ON class_sections.id = taken_classes.class_section_id
WHERE
courses.core = FALSE
AND
taken_classes.student_id = #{id}
AND
people.type = 'Instructor'
AND
people.ignore = FALSE" }

任何想法将不胜感激。谢谢!

最佳答案

从 4.1 开始,:finder_sql不仅已弃用 - 它已被 completely REMOVED from Rails .

这是通过使用范围来做类似事情的一种方法。假设我们有一个 User 类和 Job 类(所以一个用户可以有很多工作)。假设我们想要找到该用户拥有的所有不同的作业(人为的例子,但它说明了这一点),并且假设我们想要为此使用自定义 SQL。我们可以使用 find_by_sql如下

class Job < ActiveRecord::Base
scope :distinct_user_jobs, -> (user_id){ find_by_sql(["SELECT DISTINCT jobs.* FROM jobs WHERE jobs.user_id=?", user_id]) }
end

然后传入 user_id
user = User.first
Job.distinct_user_jobs(user.id)

关于ruby-on-rails-4 - Rails 4 Has_Many with Finder_SQL 已弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40592767/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com